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


 

Oracle10g由于修改主机名数据库实例崩溃,且出现ORA-600(keltnfy-ldmInit)错误。

 

 

同事在升级一个测试库的过程中碰到了这个问题,由于通过hostname命令修改了主机名称,导致Oracle 10201 for Linux X86-64环境出现实例崩溃,在alert文件中出现了ORA-600(keltnfy-ldmInit)错误。

在alert文件中出现下面的错误信息:

Errors in file /opt/ora10g/admin/testzj/udump/testzj_ora_4109.trc:
ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []
USER: terminating instance due to error 600
Instance terminated by USER, pid = 4109

对应的trace文件中,详细信息如下:

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()+31          call     ksedst1()            000000000 ? 000000001 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000001 ?
ksedmp()+610         call     ksedst()             000000000 ? 000000001 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000001 ?
ksfdmp()+21          call     ksedmp()             000000003 ? 000000001 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000001 ?
kgerinv()+161        call     ksfdmp()             000000003 ? 000000001 ?
                                                   000000000 ? 000000000 ?
                                                   000000000 ? 000000001 ?
kgeasnmierr()+163    call     kgerinv()            006579D40 ? 2AAAACA10118 ?
                                                   000000000 ? 000000000 ?
                                                   000000001 ? 000000001 ?
keltnfy()+286        call     kgeasnmierr()        006579D40 ? 2AAAACA10118 ?
                                                   000000000 ? 000000000 ?

Oracle的meatlink上文档Doc ID:  Note:5486074.8的描述:当Oracle无法确定主机名或者网络地址的时候,会出现这个错误信息。

Oracle在10.2.0.4和11.1.0.6中解决了这个bug。Oracle的metalink上指出在10.2.0.4以前的都可能导致这个错误的产生。

不过测试发现Oracle9i并不会由于修改hostname而导致错误的产生。

 
 





Startup Database Produces ORA-00600: [Keltnfy-Ldminit] (Doc ID 336447.1)    



In this Document  



Symptoms

Cause

Solution

References


APPLIES TO:

Oracle Database - Enterprise Edition - Version 10.2.0.1 to 10.2.0.3 [Release 10.2]  
 Information in this document applies to any platform.  
 ***Checked for relevance on 10-Jan-2014***   


SYMPTOMS

*Symptoms
Briefly describe the symptoms of the problem. Remember to delete any customer specific information

An startup nomount on Oracle 10g Release 2 database produces the following exception in alert log

 

Starting up ORACLE RDBMS Version: 10.2.0.1.0.  
Errors in file /opt/oracle/10.2/admin/ORCL/udump/ORCL_ora_535.trc:  
ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []  
USER: terminating instance due to error 600  
Instance terminated by USER, pid = 535  

CAUSE

The problem is related to get the host information.

In this case, ldmInit()/sldmInit() is failing with error 46 : LDMERR_HOST_NOT_FOUND

 

The following exception may also occur :

 

LDMERR_SOSD_INIT  OSD init failed to be specific in these OSD failures
LDMERR_BAD_ADDR   bad address when system call gethostname failed
LDMERR_HOST_NOT_FOUND    gethostbyname system call fails
LDMERR_NO_SUPPORT   when specific address type is not supported

 

Development has fixed two bugs so far regarding this issue

 - ORA-600[KELTNFY-LDMINIT]  STARTING THE DB 

Release Notes: 
ldmInit returned LDMERR_HOST_NOT_FOUND for the machine huge alias list/address list 
Workaround: 
reduce the alais list of the machine

 

Note:5486074.8 - ORA-600 [KELTNFY-LDMINIT] WHEN DNS IS NOT AVAILABLE

Release Notes: 
Internal error is raised by the Server Generated Alert subsystem when it can not determine Host Name or 
Network Address. This can be caused by DNS server being unavailable. 

Refer to the Note above for version that contains these fixes.

 

SOLUTION

The patch for 5486074 will not fix any underlying error from gethostbyname(), it just change the internal error to a warning message :

 

"Warning: keltnfy call to ldmInit failed with error 46"  

You will still need to fix the network configuration issue.  
These are the check you can do verify the host information

 

  • Check permission on /etc/hosts

    $ ls -l /etc/hosts 
    -rw-r--r--  2 root root 194 Oct 17  2006 /etc/hosts

  • Check if /etc/hosts file is correctly configured

     ( all of this on one line ).  

 

 

  • Check the hostname:

$ hostname  
$ ping `hostname`  

Make sure you are able to ping the hostname

 

  • Check if /etc/nodename is correctly configured
  • If you have DNS setup, ping is not a tool to diagnose DNS problem. A better tool to use is nslookup, dnsquery, or dig.
 

 

$ nslookup     
$ nslookup   
$ nslookup   

The forward and reverse lookup should succeed and return consistent address/info.

 

  • Check nsswitch.conf
 

 

$ more nsswitch.conf  
hosts:      files dns  

Make sure host lookup is also done through the /etc/hosts file and not just dns.  
It is recommended that FILES come first before DNS.

 

  • Also, check the resolv.conf. This makes sure that the DNS is working properly.

To prevent the ORA-600 error, you can upgrade to any supported version of the database or apply the  10.2.0.4 patch set.

This issue is fixed in     

    10.2.0.4 (Server Patch Set)
    11.1.0.6 (Base Release)


REFERENCES

NOTE:5486074.8   - Bug 5486074 - OERI [keltnfy-ldminit] when DNS is not available  
- ORA-600 [KELTNFY-LDMINIT] STARTING THE DB  
- ORA-600 [KELTNFY-LDMINIT] WHEN DNS IS NOT AVAILABLE  




   
 

ORA-600 [keltnfy-ldminit] (Doc ID 462888.1)ORA-00600:  [keltnfy-ldmInit], [46], [1], [], [], [], [], []_ORA-00600To BottomORA-00600:  [keltnfy-ldmInit], [46], [1], [], [], [], [], []_ORA-00600_02

Modified:Nov 16, 2016ORA-00600:  [keltnfy-ldmInit], [46], [1], [], [], [], [], []_ORA-00600_02Type:REFERENCEORA-00600:  [keltnfy-ldmInit], [46], [1], [], [], [], [], []_ORA-00600_02Status:PUBLISHEDORA-00600:  [keltnfy-ldmInit], [46], [1], [], [], [], [], []_ORA-00600_05

ORA-00600:  [keltnfy-ldmInit], [46], [1], [], [], [], [], []_ORA-00600_06

 

 Note: For additional ORA-600 related information please read Note:146580.1 PURPOSE:
  This article represents a partially published OERI note.

  It has been published because the ORA-600 error has been 
  reported in at least one confirmed bug.

  Therefore, the SUGGESTIONS section of this article may help
  in terms of identifying the cause of the error.

  This specific ORA-600 error may be considered for full publication
  at a later date. If/when fully published, additional information 
  will be available here on the nature of this error.



SUGGESTIONS:

  If the Known Issues section below does not help in terms of identifying
  a solution, please submit the trace files and alert.log to Oracle 
  Support Services for further analysis.

  Known Issues: Related Articles 									

 

  Note:336447.1 Startup Database Produces ORA-00600: [Keltnfy-Ldminit]
     

Bug# 5486074 See      Note:5486074.8 OERI [keltnfy-ldminit] when DNS is not available Fixed: 10.2.0.4, 11.1.0.6 Bug# 5438154 ORA-600[KELTNFY-LDMINIT] STARTING THE DB Fixed: 10.2.0.4, 11.1

 



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问题解决!