记一次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 版权协议,转载请附上原文出处链接和本声明。