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) | To Bottom |
Modified:Nov 16, 2016Type:REFERENCEStatus:PUBLISHED |
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问题解决!