ORA-00600 [keltnfy-ldmInit] [46]错误
Aug042014
今天在做测试的时候,重启主机后数据库无法打开,并抛出一个600错误。
Mon Aug 4 11:44:38 2014 Errors in file /u01/app/oracle/admin/EMREP/udump/emrep_ora_4450.trc: ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], [] USER: terminating instance due to error 600 Instance terminated by USER, pid = 4450
感觉很奇怪,刚刚DBCA建的库,只是重启了一下主机怎么就连nomount都起不了呢?而且还整出个600错误,看看trace文件怎么说的。
/u01/app/oracle/admin/EMREP/udump/emrep_ora_4450.trc Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, Oracle Label Security, OLAP and Data Mining Scoring Engine options ORACLE_HOME = /u01/app/oracle/product/10.2.0/db_1 System name: Linux Node name: secdb1 Release: 2.6.32-300.10.1.el5uek Version: #1 SMP Wed Feb 22 17:22:40 EST 2012 Machine: i686 Instance name: EMREP Redo thread mounted by this instance: 0 <none> Oracle process number: 0 Unix process pid: 4450, image: oracle@secdb1 KCCDEBUG_LEVEL = 0 Dynamic strand is set to TRUE Running with 1 shared and 18 private strand(s). Zero-copy redo is FALSE *** 2014-08-04 11:44:38.088 ksedmp: internal or fatal error ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], [] Current SQL information unavailable - no session. ----- Call Stack Trace ----- calling call entry argument values in hex location type point (? means dubious value) -------------------- -------- -------------------- ---------------------------- ksedst()+27 call ksedst1() 0 ? 1 ? ksedmp()+557 call ksedst() 0 ? BF000000 ? 0 ? 10 ? B6C7C1F8 ? 1 ? ksfdmp()+19 call ksedmp() 3 ? BFBA9BA8 ? AC153D9 ? CBD2DC0 ? 3 ? CB84448 ? kgerinv()+177 call 00000000 CBD2DC0 ? 3 ? kgeasnmierr()+40 call kgerinv() CBD2DC0 ? CEB3848 ? C332E00 ? 2 ? BFBA9BE0 ? keltnfy()+441 call kgeasnmierr() CBD2DC0 ? CEB3848 ? C332E00 ? 2 ? 0 ? 2E ? 0 ? 0 ? 1 ? 0 ? kscnfy()+457 call 00000000 F ? 42E4AE8C ? ksucrp()+1392 call kscnfy() F ? 42E4AE8C ? opistr_real()+2150 call ksucrp() 0 ? BFBAA4BC ? 0 ? CBD2DC0 ? CBD2DC0 ? 4 ? opistr()+684 call opistr_real() 30 ? 2 ? BFBAC504 ? opiodr()+2347 call 00000000 30 ? 2 ? BFBAC504 ? ttcpip()+4227 call 00000000 30 ? 2 ? BFBAC504 ? 0 ? CE969BE ? 1B ? opitsk()+1991 call ttcpip() CBDA5C0 ? 30 ? BFBAC504 ? 0 ? BFBAB9E4 ? BFBAC628 ? opiino()+1387 call opitsk() 0 ? 0 ? opiodr()+2347 call 00000000 3C ? 4 ? BFBAD0F0 ? opidrv()+915 call opiodr() 3C ? 4 ? BFBAD0F0 ? 0 ? sou2o()+113 call opidrv() 3C ? 4 ? BFBAD0F0 ? opimai_real()+212 call sou2o() BFBAD0D4 ? 3C ? 4 ? BFBAD0F0 ? main()+111 call opimai_real() 2 ? BFBAD120 ? __libc_start_main() call 00000000 2 ? BFBAD1E4 ? BFBAD1F0 ? +220 46625828 ? 0 ? 1 ? --------------------- Binary Stack Dump ---------------------
看到这我基本就猜到故障原因了,我猜想是主机名发生了变化,因为我做实验的是从别人那拷贝过来的虚拟机,拷贝过来的时候,这个虚拟机是挂起状态,肯定是重启之后主机名发生了变化,看看现在的主机名和hosts文件设置的主机名是否一致。
[root@rac2 sysconfig]# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=rac2 [root@rac2 sysconfig]# cat /etc/hosts # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost 192.168.249.31 edbjr2p1.localdomain ocm1 192.168.249.32 edbjr2p2.localdomain ocm2
可见,现在的主机名是rac2,可是hosts文件里面写的是ocm2,这也说明这台主机之前的主机名是rac2,之后被改为了com2,可是由于没改正确,重启之后就变回了原先的主机名了,导致这个问题的原因是在/etc/sysconfig/networking/profiles/default/目录下面存在原先配置的信息,改主机名一般都改hosts文件和/etc/sysconfig/network文件,这样一般就可以了,可是别忘了看一眼/etc/sysconfig/networking/profiles/default/目录下面是否存在之前的主机名信息,如果存在,重启之后主机名可能会变回去的。
[oracle@rac1 default]$ cd /etc/sysconfig/networking/profiles/default/ [oracle@rac1 default]$ ls hosts ifcfg-eth0 network resolv.conf [oracle@rac1 default]$ cat /etc/sysconfig/networking/profiles/default/network HOSTNAME=rac1
解决方法,删除default目录下的这个文件(或者修改这个文件),然后讲/etc/sysconfig/network文件里面的主机名改为ocm2正确的主机名,重启主机即可。
[oracle@rac1 profiles]$ rm -rf /etc/sysconfig/networking/profiles/default/* [root@rac2 sysconfig]# cat /etc/sysconfig/network NETWORKING=yes NETWORKING_IPV6=no HOSTNAME=ocm2
修改完成重启后主机,主机名变为正确的ocm2,数据库可正常打开。
————————–end—————————–