ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]问题处理
2016-06-20 22:14
746 查看
服务器断电,异常关机后,重启报错ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]
数据库运行环境是Linux上运行的ORACLE11G
--尝试启动数据库实例,报错如下:
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 624952200 bytes
Database Buffers 436207616 bytes
Redo Buffers 5517312 bytes
Database mounted.
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[89], [32294], [32511], [], [], [], [], [], [], []
--此时数据库启动到mount状态,尝试以resetlogs方式open数据库,也无法打开
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
--尝试recover后,打开数据库,仍然报相同错误
SQL> recover database;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[89], [32294], [32511], [], [], [], [], [], [], []
查询告警日志alter和trace文件,对照上网查询错误,获取报错原因:
由于服务器异常短电,导致LGWR写联机日志文件时失败,下次重新启动数据库时,需要做实例级恢复,而又无法从联机日志文件里获取到这些redo信息,因为上次断电时,写日志失败了。
--查看当前日志文件情况,从以下查询结果可以看到当前日志组为89,
SQL> select group#,sequence#,status,first_time,next_change# from v$log;
GROUP# SEQUENCE# STATUS FIRST_TIM NEXT_CHANGE#
---------- ---------- ---------------- --------- ------------
1 88 INACTIVE 16-JUN-16 3012456638
2 89 CURRENT 16-JUN-16 2.8147E+14
3 87 INACTIVE 16-JUN-16 3012450709
4 1 INACTIVE 13-JUN-16 3011785042
5 0 UNUSED 0
--恢复数据库,指定redo02.log日志
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 3012500746 generated at 06/16/2016 22:40:33 needed for thread
1
ORA-00289: suggestion :
/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2016_06_16/o1_mf_1_89_%u_.arc
ORA-00280: change 3012500746 for thread 1 is in sequence #89
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/orcl/redo02.log
Log applied.
Media recovery complete.
--恢复完成后,再次可以正常打开数据库,重启数据库正常。
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
数据库运行环境是Linux上运行的ORACLE11G
--尝试启动数据库实例,报错如下:
SQL> startup
ORACLE instance started.
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 624952200 bytes
Database Buffers 436207616 bytes
Redo Buffers 5517312 bytes
Database mounted.
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[89], [32294], [32511], [], [], [], [], [], [], []
--此时数据库启动到mount状态,尝试以resetlogs方式open数据库,也无法打开
SQL> select open_mode from v$database;
OPEN_MODE
--------------------
MOUNTED
SQL> alter database open resetlogs;
alter database open resetlogs
*
ERROR at line 1:
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
--尝试recover后,打开数据库,仍然报相同错误
SQL> recover database;
Media recovery complete.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],
[89], [32294], [32511], [], [], [], [], [], [], []
查询告警日志alter和trace文件,对照上网查询错误,获取报错原因:
由于服务器异常短电,导致LGWR写联机日志文件时失败,下次重新启动数据库时,需要做实例级恢复,而又无法从联机日志文件里获取到这些redo信息,因为上次断电时,写日志失败了。
--查看当前日志文件情况,从以下查询结果可以看到当前日志组为89,
SQL> select group#,sequence#,status,first_time,next_change# from v$log;
GROUP# SEQUENCE# STATUS FIRST_TIM NEXT_CHANGE#
---------- ---------- ---------------- --------- ------------
1 88 INACTIVE 16-JUN-16 3012456638
2 89 CURRENT 16-JUN-16 2.8147E+14
3 87 INACTIVE 16-JUN-16 3012450709
4 1 INACTIVE 13-JUN-16 3011785042
5 0 UNUSED 0
--恢复数据库,指定redo02.log日志
SQL> recover database until cancel using backup controlfile;
ORA-00279: change 3012500746 generated at 06/16/2016 22:40:33 needed for thread
1
ORA-00289: suggestion :
/u01/app/oracle/fast_recovery_area/ORCL/archivelog/2016_06_16/o1_mf_1_89_%u_.arc
ORA-00280: change 3012500746 for thread 1 is in sequence #89
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
/u01/app/oracle/oradata/orcl/redo02.log
Log applied.
Media recovery complete.
--恢复完成后,再次可以正常打开数据库,重启数据库正常。
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
相关文章推荐
- EXT3_DX_ADD_ENTRY: DIRECTORY INDEX FULL!
- R.arry.xxxx的使用、Intent连接问题
- GridView属性,布局的抽取,自定义属性,自定义控件
- test
- [uart]stty命令使用
- 堆排序的思想以及实现过程(链式存储)
- Android中ListView的具体应用
- Morphing 动画
- PHP jQuery
- PHP分页查询
- java web 实现验证码
- 堆和栈的区别
- ViewPager中切换界面Fragment被销毁的问题分析
- ASP.NET 通过FTP跨域上传文件+生成高清缩略图。
- 查看ceph中levelDB存储的数据
- oracle数据类型
- cocos listview 删除的3种方案
- 计算机视觉和深度学习领域引用次数最多的论文
- android绘制文字
- php数据库操作小要点