ORA-00600 [kcratr_nab_less_than_odr] ORA-01552 发生及解决方案
2016-01-18 21:03
471 查看
【说明】最近整个IT的运气有点背,先是机房的停电事件。最近又发生了一个事故,有台虚拟机的硬盘坏掉了,导致安装在虚拟机上面的应用和数据库全部起不来了。经过一番折腾虚拟机终于起来了,但是启动的时候报错了:
alert报警日志如下:
解决方法:
原因分析:
因为服务器的异常断电导致LGWR写ONLINE REDOLOG文件失败,当然数据也没有写入到数据文件中。下次启动数据库的时候需要做异常恢复,但是从ONLINE REDOLOG里面读取这些REDO信息的时候又找不到,所以打开的时候就报错了。
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [6674], [13272], [13337], [], [], [], [], [], [], []
数据进行恢复的时候,需要从onine redo log 1seq#6674的log,从13272恢复到13337。
今天在查看执行SQL计划时出现ORA-01552错误,原因是非系统表空间无法应用系统回滚段
ERROR at line 1:
ORA-01552: cannot use system rollback segment for non-system tablespace ''
查看参数文件:首先使用create pfile from spfile 导出spfile文件内容,分析发现 其中与回滚段相关的两个参数设置出现了问题
*.undo_management='MANUAL'
*.undo_tablespace='UNDOTBS1'
undo_management 用来定义数据库使用的回滚段是否使用自动管理模式。该参数有两个选项:AUTO表示自动管理,MANUAL表示手工管理。
undo_tablespace:用来定义在自动管理模式下,当前实例使用哪个Undo表空间。
将undo_management参数值修改为 AUTO
,重新生成spfile文件,然后重新启动数据库,问题解决。
SQL> startup ORACLE instance started. Total System Global Area 6747725824 bytes Fixed Size 2213976 bytes Variable Size 4362078120 bytes Database Buffers 2348810240 bytes Redo Buffers 34623488 bytes Database mounted. ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1],[6674], [13272], [13337], [], [], [], [], [], [], [] |
Recovery of Online Redo Log: Thread 1 Group 2 Seq 6674 Reading mem 0 Mem# 0: /oracle/oradata/klekpj/redo02.log Media Recovery Complete (klekpj) Completed: alter database recover if needed start Tue Jun 23 16:11:45 2015 alter database open Beginning crash recovery of 1 threads parallel recovery started with 7 processes Started redo scan Completed redo scan read 1900 KB redo, 0 data blocks need recovery Errors in file /oracle/diag/rdbms/klekpj/klekpj/trace/klekpj_ora_19307.trc (incident=9755): ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [6674], [13272], [13337], [], [], [], [], [], [], [] Incident details in: /oracle/diag/rdbms/klekpj/klekpj/incident/incdir_9755/klekpj_ora_19307_i9755.trc Aborting crash recovery due to error 600 Errors in file /oracle/diag/rdbms/klekpj/klekpj/trace/klekpj_ora_19307.trc: ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [6674], [13272], [13337], [], [], [], [], [], [], [] Errors in file /oracle/diag/rdbms/klekpj/klekpj/trace/klekpj_ora_19307.trc: ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [6674], [13272], [13337], [], [], [], [], [], [], [ |
SQL> startup mount; ORACLE instance started. Total System Global Area 6747725824 bytes Fixed Size 2213976 bytes Variable Size 4362078120 bytes Database Buffers 2348810240 bytes Redo Buffers 34623488 bytes Database mounted. SQL> recover database using backup controlfile until cancel; ORA-00279: change 1974040004 generated at 06/10/2015 16:04:16 needed for thread 1 ORA-00289: suggestion : /oracle/arch/1_6674_829596422.dbf ORA-00280: change 1974040004 for thread 1 is in sequence #6674 Specify log: {=suggested | filename | AUTO | CANCEL} CANCEL Media recovery cancelled. SQL> alter database open resetlogs; Database altered. 数据库成功打开了 |
ALTER DATABASE RECOVER database using backup controlfile until cancel Media Recovery Start started logmerger process Parallel Media Recovery started with 8 slaves ORA-279 signalled during: ALTER DATABASE RECOVER database using backup controlfile until cancel ... Tue Jun 23 16:56:20 2015 ALTER DATABASE RECOVER CANCEL Media Recovery Canceled Completed: ALTER DATABASE RECOVER CANCEL alter database open resetlogs Archived Log entry 6334 added for thread 1 sequence 6673 ID 0xf5f2c983 dest 1: Tue Jun 23 16:56:31 2015 Archived Log entry 6335 added for thread 1 sequence 6674 ID 0xf5f2c983 dest 1: Archived Log entry 6336 added for thread 1 sequence 6672 ID 0xf5f2c983 dest 1: RESETLOGS after incomplete recovery UNTIL CHANGE 1974040004 |
ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [6674], [13272], [13337], [], [], [], [], [], [], []
数据进行恢复的时候,需要从onine redo log 1seq#6674的log,从13272恢复到13337。
今天在查看执行SQL计划时出现ORA-01552错误,原因是非系统表空间无法应用系统回滚段
ERROR at line 1:
ORA-01552: cannot use system rollback segment for non-system tablespace ''
查看参数文件:首先使用create pfile from spfile 导出spfile文件内容,分析发现 其中与回滚段相关的两个参数设置出现了问题
*.undo_management='MANUAL'
*.undo_tablespace='UNDOTBS1'
undo_management 用来定义数据库使用的回滚段是否使用自动管理模式。该参数有两个选项:AUTO表示自动管理,MANUAL表示手工管理。
undo_tablespace:用来定义在自动管理模式下,当前实例使用哪个Undo表空间。
将undo_management参数值修改为 AUTO
,重新生成spfile文件,然后重新启动数据库,问题解决。
相关文章推荐
- hdu 1387 Team Queue (链表)
- 也说php从mysql数据库通过服务器端json返回数据出现乱码问题
- Python实现同时找最大最小值(优化版本)
- RHEL7.0 日志系统
- java基础学习总结——线程(一)
- 并查集-HDU-1232-畅通工程
- dubbo 服务端和客户端调用
- zend studio12.5破解方法
- ORM的概念, ORM到底是什么
- clear-both的使用
- 批处理中setlocal enabledelayedexpansion的作用详细整理
- The listener supports no services TNS-12541: TNS-12560: TNS-00511: Linux Error:
- sql server存储过程
- [问题记录]AutoLayout下UIScrollView 布局错位及解决方法
- java基础学习总结——哈希编码
- bzoj2783【JLOI2012】树
- 实现获取指定城市的天气预报
- Django学习系列—第一天
- JAVA设计模式
- Git详解之三 Git分支