Wednesday, December 2, 2009

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

Lately I'd just installed Oracle 10.2.0.1 in Red Hat Enterprice Linux 5.3. It run well until I changed the hostname of RHEL 5.3. I tried to change my hostname from localhost to r083rt. It changed successfully until that error appeared when I tried to connect to sqlplus.

As usual I used sqlplus "/ as sysdba" snytax to get in there and just did 'startup'. Soon after that that error code appeared : ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], []. I thought this was a serious mode ON because ORA-00600 & ORA-07445 were internal errors and usually they need to be patched on better version.

I thought the problem began when I'd changed my hostname & the RHEL didn't recognize this new hostname. I searched fro more information & found this information :
In the error ldmInit indicates that the problem is related while getting host information of oracle during startup. The first argument 46 indicates the exception LDMERR_HOST_NOT_FOUND which is "gethostbyname system call fails". Oracle was unable to get host information from OS and bug fires.

To get out from this error, I just did these following steps :

Step 01: Check permission on /etc/hosts

$ ls -l /etc/hosts
-rw-r--r-- 1 root root 153 Nov 24 2007 /etc/hosts

Note that you need read permission of all users.

Step 02: Check the contents of /etc/hosts
Open the contents of /etc/hosts and check the contents inside it.
$ less /etc/hosts
Note that the contents of this files follow following format.

IP Address fully qualified hostname simple or short hostname Alias

A simple example,

$ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 database localhost.localdomain localhost


Step 03: Check the hostname and make sure you can ping your hostname.
$ hostname
database


$ ping database
PING database (127.0.0.1) 56(84) bytes of data.
64 bytes from database (127.0.0.1): icmp_seq=0 ttl=64 time=0.057 ms
64 bytes from database (127.0.0.1): icmp_seq=1 ttl=64 time=0.050 ms
64 bytes from database (127.0.0.1): icmp_seq=2 ttl=64 time=0.041 ms


If you get the following message,
$ ping database
ping: unknown host database


then possibly you will hit above bug.
And you need to modify /etc/hosts files. In the alias section you can give the name of your machine name. If your machine name is "database" you can give /etc/hosts entry as,

127.0.0.1 database localhost.localdomain localhost

And then ping database again. Make sure you are able to ping your host.

Step 04: Diagnosis DNS problem if you have DNS setup
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 www.google.com
The forward and reverse lookup should succeed.

Step 05: Check nsswitch.conf

$ cat /etc/nsswitch.conf
hosts: files dns


Make sure host lookup is also done through the /etc/hosts file and not just dns. The keyword files should come before dns.

Step 06: Check resolv.conf

$ cat /etc/resolv.conf
nameserver 4.2.2.2


Make sure nameserver with DNS name is added there.


After these steps were completed, I tried again to do startup database & guess : It's UP again..

No comments: