DB版本: 10.2.0.1.0
OS版本: CentOS 5.3 x86_64
开发人员反映无法连接数据库,随即登陆Oracle进行排查.
$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 8 15:57:53 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance. -- 此处已经提示无法识别到Oracle实例了
SQL> startup -- 试着启动数据库,提示ORA-00600错误
ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []
随即查看alert的日志.
$ tail -f $ORACLE_BASE/admin/orcl/bdump/alert_orcl.log
Errors in file $ORACLE_BASE/admin/orcl/udump/orcl_ora_21456.trc:
ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []
USER: terminating instance due to error 600
Instance terminated by USER, pid = 21456
继续查看trc日志.
$ tail -f $ORACLE_BASE/admin/orcl/udump/orcl_ora_21456.trc
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上查询到类似问题的文章
#Symptoms
#briefly describe ths 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
String 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
The problem is related to get the host information.In this case, IdmInit()/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 call fails
LDMERR_NO_SUPPORT when specific address type is not supported
Development has fixed two bugs so far regarding this issueBug:5438154 - 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 [KELINFY-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
可以看出这个问题主要原因是主机信息问题.
提供的解决方案.
The patch for 5486074 will not fix any underlying error from gethostbyname(), it just change the internal error to a warning meessage
"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
■ Check if /etc/hosts file is correctly configured
<ipaddress> <fully qualified hostbane> <simple or short hostname> <alias, if applicable> (all of this on one)
■ Check the hostname:
$ hostname
$ ping `hostname`
Make sure you are able to ping the hostname
■ Check if /et/nodename is correctly
■ 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 <shortname>
$ nslookup <long name>
$ nslookup <ip address>
The forward and reverse lookup should succeed and return consistent address/info.
■ Check nsswitch.conf
经过上述步骤查看ping `hostname`无法通过.
SQL> SELECT HOST_NAME FROM V$INSTANCE;
HOST_NAME
----------------------------------------------------------------
tiger.localdomain
$ cat /etc/hosts
192.168.0.138 orcl.localdomain orcl
发现数据库主机名与主机名不同,原来是哪位“先生”把主机名变更了.
更改/etc/hosts以及/etc/sysconfig/network主机名与V$INSTANCE结果一致.
再次启动数据库.
$ sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Mon Dec 8 16:03:01 2014
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 2147483648 bytes
Fixed Size 2022144 bytes
Variable Size 285213952 bytes
Database Buffers 1845493760 bytes
Redo Buffers 14753792 bytes
Database mounted.
Database opened.
-- 正常启动