OS:redhat 4.3 x86

DB:10.2.0.1

今天在物化视图远程复制的测试中,关闭一数据库后重启,出现ora-600报错,让我们分析一下:

[oracle@prod1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 – Production on Thu Jul 19 10:54:15 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []

查看日志:

[oracle@prod1 bdump]$ tail -f alert_prod1.log
core_dump_dest = /u01/app/oracle/admin/prod1/cdump
audit_file_dest = /u01/app/oracle/admin/prod1/adump
db_name = prod1
open_cursors = 300
pga_aggregate_target = 94371840
Thu Jul 19 10:54:19 2012
Errors in file /u01/app/oracle/admin/prod1/udump/prod1_ora_4184.trc:
ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []
USER: terminating instance due to error 600
Instance terminated by USER, pid = 4184

按照alert日志提示去udump找错误信息

[oracle@prod1 udump]$ tail -f prod1_ora_4184.trc
KCBS: nbseg[15] is 0
KCBS: nbseg[16] is 0
KCBS: nbseg[17] is 0
KCBS: nbseg[18] is 0
KCBS: nbseg[19] is 0
KCBS: Act cnt = 0
KSOLS: Begin dumping all object level stats elements
KSOLS: Done dumping all elements. Exiting.
Dump event group for SESSION
Unable to dump event group – no SESSION state objectDump event group for SYSTEM

通过在metalink上的查询【Startup Database Produces ORA-00600: [Keltnfy-Ldminit] [ID 336447.1]】该文章提到该错误是由于网络配置引起的,并建议检查hosts文件,使我突然联想到在关闭重启之前为了方便记忆改过一次hostname并只写进network里但没有对hosts文件进行更新。

好,找到问题所在,修改hosts文件,重启数据库

[oracle@prod1 ~]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 – Production on Thu Jul 19 11:18:39 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 71304784 bytes
Database Buffers 209715200 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
SQL>

数据库正常启动!

在生产环境中大家切记不可轻易修改主机名,一不小心就会触发该BUG,如果确实要修改请把新的主机名写进/etc/hosts和/etc/sysconfig/network这两个文件。

至此,该ORA-600问题解决!