此类错误可能发生在服务器电源突然失败(使用备份控制文件进行恢复)
报错类型:
SQL> alter database open*ERROR at line 1:ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],[23], [81], [189], [], [], [], [], [], [], []
解决方案:
1.查看控制文件位置与当前oracle使用的联机重做日志文件
SQL> Show parameter control_files;NAME TYPE VALUE------------------------------------ ----------- ------------------------------control_files string D:\APP\MAZAR\ORADATA\ORCL\CONTROL01.CTL, D:\APP\MAZAR\FLASH_RECOVERY_AREA\ORCL\CONTROL02.CTLSQL> select a.member,a.group#,b.status from v$logfile a ,v$log b where a.group#=b.group# and b.status='CURRENT';MEMBER--------------------------------------------------------------------------------GROUP# STATUS---------- ----------------D:\APP\MAZAR\ORADATA\ORCL\REDO02.LOG2 CURRENT
2.关闭数据库,并备份控制文件
C:\Windows\system32>COPY D:\APP\MAZAR\ORADATA\ORCL\CONTROL01.CTL D:\APP1 file(s) copied.
3.挂载数据库并使用控制日志与联机重做日志进行恢复
SQL> recover database using backup controlfile until cancel;ORA-00279: change 1460665 generated at 10/08/2012 08:38:00 needed for threadORA-00289: suggestion :D:\APP\MAZAR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2012_10_14\O1_MF_1_23_%U_.ARORA-00280: change 1460665 for thread 1 is in sequence #23Specify log: {=suggested | filename | AUTO | CANCEL}D:\APP\MAZAR\ORADATA\ORCL\REDO02.LOGLog applied.Media recovery complete.
4.打开数据库,并重置日志文件
SQL> alter database open resetlogs;Database altered.
参考文件:
http://mohamedazar.com/2012/10/14/ora-00600-kcratr_nab_less_than_odr-when-alter-database-open-fails/