问题出现背景:
数据库迁移,源目端数据库版本为11.2.0.1 ,将控制文件、数据文件等全部拷贝到目的端,将库拉起后,告警日志文件里面有以下报错:
Errors in file /home/oracle/app/diag/rdbms/zszjk/ZSZJK/trace/ZSZJK_ora_19763.trc (incident=7265):
ORA-00600: 内部错误代码, 参数: [qcisSetPlsqlCtx:tzi init], [], [], [], [], [], [], [], [], [], [], []
Errors in file /home/oracle/app/diag/rdbms/zszjk/ZSZJK/trace/ZSZJK_ora_19763.trc (incident=7266):
ORA-00600: 内部错误代码, 参数: [qcisSetPlsqlCtx:tzi init], [], [], [], [], [], [], [], [], [], [], []
Errors in file /home/oracle/app/diag/rdbms/zszjk/ZSZJK/trace/ZSZJK_ora_19763.trc (incident=7267):
ORA-00600: 内部错误代码, 参数: [qcisSetPlsqlCtx:tzi init], [], [], [], [], [], [], [], [], [], [], []
Wed Oct 10 09:28:59 2018
检查, 搜索MOS, 看到了一篇文档:
ORA-600 [qcisSetPlsqlCtx:tzi init] after Database Restart (文档 ID 362036.1)
A) Oracle version 11.2 and higher:
A.1) check if the required DSt patch is applied/available in the $ORACLE_HOME
In 11.2 there are no timezlrg.dat and timezone.dat, this is normal and intended.
please do NOT make any symbolic links for timezlrg.dat and timezone.dat or copy any of the files in \oracore\zoneinfo\ and rename them to timezlrg.dat and timezone.dat
in 11.2 there should be NO timezlrg.dat and timezone.dat in $ORACLE_HOME/oracore/zoneinfo/ (unix) or %ORACLE_HOME%\oracore\zoneinfo\ (windows)
Oracle 11.2.0.1 has by default all RDBMS DST updates from DSTv1 to DSTv11 included in the software installation.
Oracle 11.2.0.2 through 11.2.0.4 has by default all RDBMS DST updates from DSTv1 to DSTv14 included in the software installation.
Oracle 12.1.0.1 and 12.1.0.2 has by default all RDBMS DST updates from DSTv1 to DSTv18 included in the software installation.
These files are found in $ORACLE_HOME/oracore/zoneinfo and have a prefix indicating the DST version.
For example timezlrg_4.dat is the DSTv4 "large" file, timezlrg_11.dat is the DSTv11 "large" file.
connect and check:
select NAME, VALUE$ from SYS.PROPS$ where NAME like ('DST_%_TT_VERSION');
DST_SECONDARY_TT_VERSION -> should normally be 0 , if this has a value then also check if it is applied
DST_PRIMARY_TT_VERSION -> required TZ file
if DST_PRIMARY_TT_VERSION is for example "16" then check if
$ORACLE_HOME/oracore/zoneinfo or %ORACLE_HOME%\oracore\zoneinfo
* contains timezone_16.dat and timezlrg_16.dat if not then apply the missing DSTv16 patch
* the files are readable for the ORACLE OS user , if not adjust permissions
NOTE: this does not means you always need to apply DSTV16, the needed patch is depending on the version found by the select.
List of all DST patch numbers: Note 412160.1 "Updated DST transitions and new Time Zones in Oracle Time Zone File patches" / H) Overview of what DST version is by default used / included in what Oracle RDBMS version and all DST patch numbers
Again do NOT create yourself any timezlrg.dat and timezone.dat files or links.
其中提到了timezone的时区信息必须有时区文件信息一一对应
检查了一下, 以下是输出信息:
SQL> col name format a30
SQL> col value$ format a10
SQL> select NAME, VALUE$ from SYS.PROPS$ where NAME like ('DST_%_TT_VERSION');
NAME VALUE$
------------------------------ ----------
DST_PRIMARY_TT_VERSION 14
DST_SECONDARY_TT_VERSION 0
这样,就必须有时区信息文件
E:\app\Administrator\product\11.2.0\dbhome_1\oracore\zoneinfo\timezlrg_14.dat
E:\app\Administrator\product\11.2.0\dbhome_1\oracore\zoneinfo\timezone_14.dat
对应
检查安装目录之后,果然没有这两个文件。
从旧的安装目录拷贝至新的目录之后,重新启动,就再未出现这个问题