ORA-00600: [kcratr_nab_less_than_odr]

  • Post author:
  • Post category:其他


记一次ORA -00600 报错

启动数据库时报错ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1050], [58033], [58039], [], [], [], [], [], [], []

此时提示了ORA-00600: internal error code错误信息,这类错误一般是oracle自己内部的bug,在12C之后就没有了。此类信息的重点在arguments之后,但是一般也没有很具体的信息,此时我们可以在trace目录查看alert日志,若信息还不够明确,再根据alter log中相应的trc文件获取具体信息。

之前也遇到过类似的情况,看到arguments: [kcratr_nab_less_than_odr]也就明白了原因——服务器异常断电,导致LGWR写联机日志文件时失败,由于数据库异常停机,所以启动的时候需要做实例级恢复,因为写联机日志失败所以无法从中获取这些redo信息。说说ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],[1050], [58033], [58039]的意思:1号线程实例需要恢复日志序列号为1050的联机日志文件,需要恢复到编号为58039的日志块,而实际上只能恢复到第58033个日志块。

具体处理如下:

SQL> startup
ORACLE instance started.

Total System Global Area 1068937216 bytes
Fixed Size		    2260088 bytes
Variable Size		 1010828168 bytes
Database Buffers	   50331648 bytes
Redo Buffers		    5517312 bytes
Database mounted.
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1050], [58033], [58039], [], [], [], [], [], [], []
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery


SQL> select member from v$logfile;

MEMBER
------------------------------------------------------------
/oradata/orcl/redo01.log
/oradata/orcl/redo02.log
/oradata/orcl/redo03.log
/oradata/orcl/redo04.log
/oradata/orcl/redo05.log
/oradata/orcl/redo06.log

6 rows selected.

SQL> select * from v$log;   

    GROUP#    THREAD#  SEQUENCE#      BYTES  BLOCKSIZE	  MEMBERS ARC STATUS	       FIRST_CHANGE# FIRST_TIM NEXT_CHANGE# NEXT_TIME
---------- ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- --------- ------------ ---------
	 1	    1	    1049   52428800	   512		1 YES INACTIVE		    28366076 22-NOV-20	   28399480 22-NOV-20
	 3	    1	    1048   52428800	   512		1 YES INACTIVE		    28332910 22-NOV-20	   28366076 22-NOV-20
	 2	    1	    1050   52428800	   512		1 NO  CURRENT		    28399480 22-NOV-20	 2.8147E+14

SQL> select * from v$logfile;

    GROUP# STATUS  TYPE    MEMBER							IS_
---------- ------- ------- ------------------------------------------------------------ ---
	 1	   ONLINE  /oradata/orcl/redo01.log					NO
	 2	   ONLINE  /oradata/orcl/redo02.log					NO
	 3	   ONLINE  /oradata/orcl/redo03.log					NO
	 4	   STANDBY /oradata/orcl/redo04.log					NO
	 5	   STANDBY /oradata/orcl/redo05.log					NO
	 6	   STANDBY /oradata/orcl/redo06.log					NO

6 rows selected.

SQL> recover database until cancel using backup controlfile;
ORA-00279: change 28443419 generated at 11/22/2020 23:31:20 needed for thread 1
ORA-00289: suggestion : /home/oracle/arch/1_1050_1024941968.dbf
ORA-00280: change 28443419 for thread 1 is in sequence #1050


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/oradata/orcl/redo02.log
Log applied.
Media recovery complete.
SQL> alter database open resetlogs;

Database altered.

SQL> 



版权声明:本文为weixin_42955647原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。