简单记录一次ORA-00600 kcratr_nab_less_than_odr
2014-07-04 10:19
627 查看
当前详细报错已经没有了,只有相应图。参考EYGLE一篇文章中数据:
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr]错误,具体的错误信息类似:
Incident 63078 created, dump file: /u01/diag/rdbms/orcl/orcl/incident/incdir_63078/orcl_ora_1916_i63078.trc
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [3313], [2328320], [2334233], [], [], [], [], [], [], []
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [3313], [2328320], [2334233], [], [], [], [], [], [], []
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [3313], [2328320], [2334233], [], [], [], [], [], [], []
ALERT日志中有以下:
Thread 1 checkpoint: logseq 3313, block 2, scn 5965899084787
cache-low rba: logseq 3313, block 1484161
on-disk rba: logseq 3313, block 2334233, scn 5965899135009
start recovery at logseq 3313, block 1484161, scn 0
600错误中的1,3313的含义,是Thread 1 logseq 3313,那么剩下的就应该是恢复时的rba地址,错误提示中的2334233是On-Disk Rba,是恢复应该到达的终点,而2328320小于On-Disk Rba,就应该是Less Than里面提到的恢复的终点,因为没有到达Redo的最后位置,被认为是非法的,可能丢失数据。
TRACE文件中会有相应的提示:
WARNING! Crash recovery of thread 1 seq 3313 is
ending at redo block 2328320 but should not have ended before
redo block 2334233
我遇到的问题当时只有图片如下
![](https://img-blog.csdn.net/20140704101607687?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFpYnVzdWFueXVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
原因可能是因为实例恢复的进度不够(因为Redo丢失或者硬件故障导致的REDO不完整--坏块)。
这一点可以从当时报错的TRACE文件的图片中得到验证。
从图中可以看到,需要最少恢复到的ON DISK RBA是block24955,而当前能恢复到的是24957,有部分块丢失,因此报错。
最终通过重建控制文件、再进行不完全恢复来OPEN数据库。(前提是客户只要求OPEN库,是客户的测试库,丢些数据没关系,如果是生产库不允许丢数据,此方法就不适用了)
使用命令类似以下:
MOUNT状态下: ALTERDATABASEBACKUP CONTROLFILE TOTRACE AS'/home/oracle/a.txt';
使用备份的控制文件中内容,在SQLPLUS窗口执行类似以下:
CREATECONTROLFILE REUSE DATABASE…………
Alter database recover database until cancel using backup controlfile;
Alter database open resetlogs;
并新建临时表空间。
参考链接:http://www.xifenfei.com/2347.html http://www.eygle.com/archives/2010/05/kcratr_nab_less_than_odr.html
1.故障现象
数据库版本11G,错误类似以下:ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr]错误,具体的错误信息类似:
Incident 63078 created, dump file: /u01/diag/rdbms/orcl/orcl/incident/incdir_63078/orcl_ora_1916_i63078.trc
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [3313], [2328320], [2334233], [], [], [], [], [], [], []
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [3313], [2328320], [2334233], [], [], [], [], [], [], []
ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [3313], [2328320], [2334233], [], [], [], [], [], [], []
ALERT日志中有以下:
Thread 1 checkpoint: logseq 3313, block 2, scn 5965899084787
cache-low rba: logseq 3313, block 1484161
on-disk rba: logseq 3313, block 2334233, scn 5965899135009
start recovery at logseq 3313, block 1484161, scn 0
600错误中的1,3313的含义,是Thread 1 logseq 3313,那么剩下的就应该是恢复时的rba地址,错误提示中的2334233是On-Disk Rba,是恢复应该到达的终点,而2328320小于On-Disk Rba,就应该是Less Than里面提到的恢复的终点,因为没有到达Redo的最后位置,被认为是非法的,可能丢失数据。
TRACE文件中会有相应的提示:
WARNING! Crash recovery of thread 1 seq 3313 is
ending at redo block 2328320 but should not have ended before
redo block 2334233
我遇到的问题当时只有图片如下
原因可能是因为实例恢复的进度不够(因为Redo丢失或者硬件故障导致的REDO不完整--坏块)。
这一点可以从当时报错的TRACE文件的图片中得到验证。
从图中可以看到,需要最少恢复到的ON DISK RBA是block24955,而当前能恢复到的是24957,有部分块丢失,因此报错。
2.故障解决:
首先尝试通过RECOVER DATABASE; RECOVERDATABASEUNTIL CANCEL;等方式进行恢复,但是未解决此问题。最终通过重建控制文件、再进行不完全恢复来OPEN数据库。(前提是客户只要求OPEN库,是客户的测试库,丢些数据没关系,如果是生产库不允许丢数据,此方法就不适用了)
使用命令类似以下:
MOUNT状态下: ALTERDATABASEBACKUP CONTROLFILE TOTRACE AS'/home/oracle/a.txt';
使用备份的控制文件中内容,在SQLPLUS窗口执行类似以下:
CREATECONTROLFILE REUSE DATABASE…………
Alter database recover database until cancel using backup controlfile;
Alter database open resetlogs;
并新建临时表空间。
参考链接:http://www.xifenfei.com/2347.html http://www.eygle.com/archives/2010/05/kcratr_nab_less_than_odr.html
相关文章推荐
- 简单记录一次ORA-00600 kcratr_nab_less_than_odr
- ORA-00600-[kcratr_nab_less_than_odr]问题小记
- ORA-00600 kcratr_nab_less_than_odr
- Alter database open fails with ORA-00600 kcratr_nab_less_than_odr (文档 ID 1296264.1)
- ORA-00600:内部错误代码,[kcratr_nab_less_than_odr]故障解决
- ORA-00600[kcratr_nab_less_than_odr]故障解决
- ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]问题处理
- ORA-00600[kcratr_nab_less_than_odr][1], [13271], [15011], [15130]故障解决
- ORA-00600 [kcratr_nab_less_than_odr] ORA-01552 发生及解决方案
- 解决ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]错误
- ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]
- ORA-00600[kcratr_nab_less_than_odr]故障解决
- ORA-00600[kcratr_nab_less_than_odr]故障解决
- ORA-00600[kcratr_nab_less_than_odr]小记
- ORA-00600[kcratr_nab_less_than_odr]故障解决
- ORACLE数据库因意外停电导致 ORA-00600:[kcratr_nab_less_than_odr]恢复过程
- 巧遇ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr]
- ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [315], [70505], [70506]
- 解决ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]错误
- Oracle断电恢复ORA-00600: 内部错误代码, 参数: [kcratr_nab_less_than_odr], [1], [44437], [17323], [18486], [