This error may cause due to improper shutdown and will throws the error
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]
while issuing the command alter database open
Option 1:
SQL>Startup mount ;
SQL>Show parameter control_files
Query 1
————
SQL> select a.member, a.group#, b.status from v$logfile a ,v$log b where a.group#=b.group# and b.status=’CURRENT’ ;
Note down the name of the redo log
SQL> Shutdown abort ;
Take a OS Level backup of the controlfile (This is to ensure we have a backup of current state of controlfile)
SQL> Startup mount ;
SQL> recover database using backup controlfile until cancel ;
Enter location of redo log shown as current in Query 1 when prompted for recovery
Hit Enter
SQL> Alter database open resetlogs ;
Option 2:
Recreate the controlfile using the Controlfile recreation script
With database in mount stage
rman target /
rman> spool log to ‘/tmp/rman.log’;
Rman> list backup ;
Rman> exit
Keep this log handy
Go to sqlplus
SQL> Show parameter control_files
Keep this location handy.
SQL> oradebug setmypid
SQL> Alter session set tracefile_identifier=’controlfilerecreate’ ;
SQL> Alter database backup controlfile to trace ;
SQL> oradebug tracefile_name ; –> This command will give the path and name of the trace file
Go to this location ,Open this trace file and select the controlfile recreation script with NO Resetlogs option
SQL> Shutdown immediate;
Rename the existing controlfile to <originalname>_old —> This is Important as we need to have a backup of existing controlfile since we plan to recreate it
SQL> Startup nomount
Now run the Controlfile recreation script with NO Resetlogs mode
SQL> Alter database open ;
For database version 10g and above
Once database is opened you can recatalog the rman backup information present in the list /tmp/rman.log using
Rman> Catalog start with ‘<location of backupiece>’ ;
it is recommended to take a hot backup of the database once recovery completed.