ORA-00600-[kcratr_nab_less_than_odr]问题小记
2018年03月12日 20:56:57 我不是VIP 阅读数 1500
https://blog.csdn.net/u010343795/article/details/79532799 协助同事解决了一个演示环境的问题 用的这个网页 感觉作者写的挺好的 记得最开始盖国强里的书 还写过 这个东西如何处理. kernel 的error code 的含义 感觉oracle的东西也太多了.. 搞不太明白.
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010343795/article/details/79532799
上午一实施哥们来求救说一个做ETL的数据库无法启动了,出现了ORA-00600的错误。之前也遇到过几次ORA-00600内部错误的问题,几次都是因为数据库服务器异常断电导致的,这类错误一般是oracle自己内部的bug。下面记录下解决的过程:
1、先将数据库启动到mount状态,没有问题,说明数据库成功的打开控制文件。
SQL> startup mount ORACLE instance started. Total System Global Area 8217530368 bytes Fixed Size 2214856 bytes Variable Size 5100274744 bytes Database Buffers 3087007744 bytes Redo Buffers 28033024 bytes Database mounted.
2、尝试open数据库,此时主要会读取数据文件、redo日志等。
SQL> alter database open; alter database open * ERROR at line 1: ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [4252], [17024], [17032], [], [], [], [], [], [], []
此时提示了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],[4252], [17024], [17032]
的意思:1号线程实例需要恢复日志序列号为4252的联机日志文件,需要恢复到编号为17032的日志块,而实际上只能恢复到第17024个日志块。
3、下面看看怎么解决。查看当前日志文件信息:
SQL> select group#,sequence#,status,first_time,next_change# from v$log; GROUP# SEQUENCE# STATUS FIRST_TIM NEXT_CHANGE# ---------- ---------- ---------------- --------- ------------ 1 4252 CURRENT 06-MAR-18 2.8147E+14 3 4251 INACTIVE 06-MAR-18 4.9009E+12 2 4250 INACTIVE 06-MAR-18 4.9009E+12
当前日志组组号为1,再通过v$logfile
查看组号为1的redo日志的文件位置
SQL> select * from v$logfile; GROUP# STATUS TYPE MEMBER ---------- ------- ------- ------------------------------ 1 ONLINE /home/wonders/app/wonders/oradata/orcl/redo01.log 3 ONLINE /home/wonders/app/wonders/oradata/orcl/redo03.log 2 ONLINE /home/wonders/app/wonders/oradata/orcl/redo02.log
指定redo1.log
恢复数据库
SQL> recover database until cancel using backup controlfile; ORA-00279: change 4900911271334 generated at 03/06/2018 05:46:29 needed for thread 1 ORA-00289: suggestion : /home/wonders/app/wonders/flash_recovery_area/ORCL/archivelog/2018_03_12/o1_mf_1 _4252_%u_.arc ORA-00280: change 4900911271334 for thread 1 is in sequence #4252 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} /home/wonders/app/wonders/oradata/orcl/redo01.log Log applied. Media recovery complete.
恢复完成后必须以RESETLOGS方式打开数据库
SQL> alter database open resetlogs; Database altered.
原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/11199319.html