Wednesday, January 28, 2009

ORA-00600: internal error code, arguments: [19004]

If you ever come across the error code "ORA-00600: internal error code, arguments: [19004], [], []...." while running query ralated to any table, view, index
here is the solution for it
login to your oracle database using pl/sql tool
run the below command on the command prompt
1. in case of error on querying table
ANALYZE TABLE table_name delete statistics;
2. in case of error on querying view
put the command above with related tables in the view. i.e run analyze tables for each table that form that view.

Ex:-

Create database with dbca (all default values):-
Created and imported two users in this database

And executed the below query

select d.mdl_code, substr(d.short_desc,1,22) short_desc,
d.version Prod, t.version UAT from (select * from PROD.module_versions) d,
(select * from UAT.module_versions) t where d.mdl_code = t.mdl_code(+)
and d.short_desc = t.short_desc(+)

Get the bellow error:-

ORA-00600: internal error code, arguments: [19004], [], [], [], [], [], [], []
Deleted statistics for the both tables in databaseas a super user:-
ANALYZE TABLE prod.module_versions delete statistics;
ANALYZE TABLE uat.module_versions delete statistics;
Now query is working fine.
____________________________________________________________________________________

ORA-00600[4193]/[4194]: -

Option 1:- Support Method(Drop the undo tablespace).

There is no need to use Unsupported parameter like _offline_rollback_segments and _corrupted_rollback_segments to resolve ora-00600[4193]/[4194]

Option 1 :- Supported Method
======================

Drop the undo tablespace.

This error normally happens for a new transaction. The trace file actually shows an active transaction for the undo segment because this is the transaction created by the same process. If the undo segment happens to have an active transaction , then Oracle may recover it later with no problems .

Normally if the header is dumped after the error, the active transactin is gone.

So a Simpler option to resolve this issue is.

Step 1
SQL> Startup nomount ; --> using spfile

SQL> Create pfile='/tmp/corrupt.ora' from spfile ;
SQL> Shutdown immediate;

Step 2
Modify the corrupt.ora and set Undo_managment=Manual
SQL> Startup mount pfile='/tmp/corrupt.ora'
SQL> Show parameter undo
it should show manual
SQL> Alter database open ;
If it comes up
SQL> Create rollback segment r01 ;
SQL> Alter rollback segment r01 online ;
Create a new undo tablespace
SQL> Create undo tablespace undotbs_new datafile '<>' size <> M ;

Drop the Old undo tablespace

SQL> Drop tablespace including contents and datafiles

Step 3
SQL> Shutdown immediate;
SQL> Startup nomount ; ---> Using spfile
SQL>Alter system set undo_tablespace= scope=spfile;
SQL> Shutdown immediate ;
SQL> Startup

For 8i database and Below

SQL>Startup restrict
Drop the Manual rollback segments and recreate it
@Option 2 (Drop the Rollback segment)
@From the ora-00600[4194] trace file identify the undo segment
@For example
@ORA-00600: internal error code, arguments: [4194], [19], [33], [], [], [],
@In the above example
@ARGUMENTS:
@a----> 19
@Search for UNDO BLK in the trace file
@********************************************************************************
@cnt--->0x13 --> Decimal --> 19
@Option 3(System undo segment erroring with Ora-00600[4194/4193]
@Option 1 would fail if the undo segment involved is System undo segment.
@Please refer the note given below for patching the same.
____________________________________________________________________________________
ORA-00600 arguments: [keltnfy-ldmInit], [46]

Problem Description
In oracle 10.2.0.1 while creating database with dbca it fails with message below.
ORA-00600: internal error code, arguments: [keltnfy-ldmInit], [46], [1], [], [], [], [], [] If you try to create your database manually then also the command startup nomount fails with above error message.

Cause of the Problem
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.

Solution of the Problem
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