请选择 进入手机版 | 继续访问电脑版

ORACLE SOS

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8658|回复: 5

记录一次ORA-00600 [kcrf_resilver_log_1] 恢复过程

[复制链接]

95

主题

266

帖子

1719

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1719
发表于 2014-3-15 20:43:33 | 显示全部楼层 |阅读模式
运行环境
数据库版本:11.2.0.1  运行平台:Linux  非归档无任何备份
数据库启动报错
Tue Mar 04 15:22:16 2014
ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
parallel recovery started with 32 processes
Started redo scan
Errors in file /opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc  (incident=16996):
ORA-00600: internal error code, arguments: [kcrf_resilver_log_1],[0x7C0E59B40], [2], [], [], [], [], [], [], [], [], []
Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_16996/ORCL_ora_54101_i16996.trc
Trace dumping is performingid=[cdmp_20140304152217]
Aborting crash recovery due to error 600
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc:
ORA-00600: internal error code, arguments:[kcrf_resilver_log_1], [0x7C0E59B40], [2], [], [], [], [], [], [], [], [], []
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc:
ORA-00600: internal error code, arguments:[kcrf_resilver_log_1], [0x7C0E59B40], [2], [], [], [], [], [], [], [], [], []
ORA-600 signalled during: ALTER DATABASEOPEN...

相关scn信息
数据库scn信息
  
DBID
  
  
NAME
  
  
OPEN_MODE
  
  
CREATED
  
  
OPEN_MODE
  
  
LOG_MODE
  
  
CHECKPOINT_CHANGE#
  
  
CTL_CHANGE#
  
  
1365059051
  
  
ORCL
  
  
MOUNTED
  
  
2014-01-19  17:18:35
  
  
MOUNTED
  
  
NOARCHIVELOG
  
  
48503067
  
  
48510748
  
数据文件scn信息
  
TS#
  
  
FILE#
  
  
FILE_SIZE_G
  
  
STATUS
  
  
ENABLED
  
  
SCN
  
  
STOP_SCN
  
  
0
  
  
1
  
  
10.576171875
  
  
SYSTEM
  
  
READ WRITE
  
  
48503067
  
  
  
  
1
  
  
2
  
  
.751953125
  
  
ONLINE
  
  
READ WRITE
  
  
48503067
  
  
  
  
2
  
  
3
  
  
1.025390625
  
  
ONLINE
  
  
READ WRITE
  
  
48503067
  
  
  
  
4
  
  
4
  
  
.0048828125
  
  
ONLINE
  
  
READ WRITE
  
  
48503067
  
  
  
  
6
  
  
5
  
  
15
  
  
ONLINE
  
  
READ WRITE
  
  
48503067
  
  
  
数据文件头scn信息
  
TS#
  
  
FILE#
  
  
TABLESPACE_NAME
  
  
STATUS
  
  
ERROR
  
  
FORMAT
  
  
REC
  
  
FUZ
  
  
SCN
  
  
0
  
  
1
  
  
SYSTEM
  
  
ONLINE
  
  
  
  
10
  
  
NO
  
  
YES
  
  
48503067
  
  
1
  
  
2
  
  
SYSAUX
  
  
ONLINE
  
  
  
  
10
  
  
NO
  
  
YES
  
  
48503067
  
  
2
  
  
3
  
  
UNDOTBS1
  
  
ONLINE
  
  
  
  
10
  
  
NO
  
  
YES
  
  
48503067
  
  
4
  
  
4
  
  
USERS
  
  
ONLINE
  
  
  
  
10
  
  
NO
  
  
YES
  
  
48503067
  
  
6
  
  
5
  
  
ZNKK
  
  
ONLINE
  
  
  
  
10
  
  
NO
  
  
YES
  
  
48503067
  
这里的数据库ORACLE 11.2.0.1因为Bug9056657导致数据库redobuffer未完整写入到redo log,从而导致数据库在启动过程中出现ORA-00600[kcrf_resilver_log_1]错误,而导致无法启动。
恢复过程ORA-00600 [kcrf_resilver_log_1]处理
Tue Mar 04 15:22:16 2014
ALTER DATABASE OPEN
Beginning crash recovery of 1 threads
parallel recovery started with 32 processes
Started redo scan
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_54101.trc  (incident=16996):
ORA-00600: internal error code, arguments: [kcrf_resilver_log_1], [0x7C0E59B40], [2], [], [], [],[], [], [], [], [], []
这里可以看出来,数据库在open过程中需要读取redo log进行实例恢复,但是由于redo log因为bug异常,导致实例恢复无法完整。也就是说数据库无法完成完成实例恢复,也就是说依靠数据库自身无法完成实例恢复,需要人工干预强制拉起数据库
尝试_allow_resetlogs_corruption= TRUE在数据库open过程不验证一致性,强制拉起数据库,报错如下:
Thu Mar 06 16:41:02 2014
SMON: enabling cache recovery
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60342.trc  (incident=18197):
ORA-00600: internal error code, arguments:[2662], [0], [48503075], [0], [48508238], [12583040], [], [], [], [], [], []
Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_18197/ORCL_ora_60342_i18197.trc
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60342.trc:
ORA-00600: internal errorcode, arguments: [2662], [0], [48503075], [0], [48508238], [12583040], [], [],[], [], [], []
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60342.trc:
ORA-00600: internal error code, arguments:[2662], [0], [48503075], [0], [48508238], [12583040], [], [], [], [], [], []
Error 600 happened during db open, shuttingdown database
USER (ospid: 60342): terminating theinstance due to error 600
Instance terminated by USER, pid = 60342
ORA-1092 signalled during: alter databaseopen resetlogs...
ORA-600[2662]恢复
很常见的ORA-600[2662]错误,解决该问题的一般方法是推进scn,使用event 10015 推进scn,尝试open数据库,出现如下错误
SMON: enabling tx recovery
Database Characterset is ZHS16GBK
No Resource Manager plan active
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_smon_60678.trc  (incident=19357):
ORA-00600: internal error code, arguments:[4194], [], [], [], [], [], [], [], [], [], [], []
Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_19357/ORCL_smon_60678_i19357.trc
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_ora_60694.trc  (incident=19405):
ORA-00600: internal error code, arguments:[4193], [], [], [], [], [], [], [], [], [], [], []
Incident details in:/opt/oracle/diag/rdbms/orcl/ORCL/incident/incdir_19405/ORCL_ora_60694_i19405.trc
Doing block recovery for file 3 block 1443
Resuming block recovery (PMON) for file 3block 1443
Block recovery from logseq 2, block 64 toscn 1073742051
Recovery of Online Redo Log: Thread 1 Group2 Seq 2 Reading mem 0
Mem# 0: /opt/oracle/oradata/orcl/redo02.log
Block recovery stopped at EOT rba 2.67.16
Block recovery completed at rba 2.67.16,scn 0.1073742050
Doing block recovery for file 3 block 128
Resuming block recovery (PMON) for file 3block 128
Block recovery from logseq 2, block 64 toscn 1073742047
Recovery of Online Redo Log: Thread 1 Group2 Seq 2 Reading mem 0
Mem# 0: /opt/oracle/oradata/orcl/redo02.log
Block recovery completed at rba 2.65.16,scn 0.1073742049
Errors in file/opt/oracle/diag/rdbms/orcl/ORCL/trace/ORCL_smon_60678.trc:
ORA-01595: error freeingextent (3) of rollback segment (1))
ORA-00600: internal errorcode, arguments: [4194], [], [], [], [], [], [], [], [], [], [], []
ORA-600[4194]恢复
因为11Gundo segment名称后面有时间戳,而且通过strings也不太好定位到准确名称,因此直接使用dul挖取数据文件获得名称,然后使用_corrupted_rollback_segments屏蔽,然后顺利打开数据库
在最后导出过程中还发现ORA-8013,然后通过plsql抽取该表正常数据,完成这次恢复
该库恢复过程使用了不少隐含参数和event,可能导致数据不一致,强烈建议通过逻辑方式重建库,保证数据安全稳定。



Q Q:107644445
Tel:13429648788
Email:dba@xifenfei.com
个人Blog(惜分飞)
提供专业ORACLE技术支持(数据恢复,安装实施,升级迁移,备份容灾,故障诊断,系统优化等)
回复

使用道具 举报

95

主题

266

帖子

1719

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1719
 楼主| 发表于 2014-3-15 20:46:11 | 显示全部楼层
朋友在win x64位上的ORACLE 11.2.0.1启动出现ORA-00600[kcrf_resilver_log_1],让我帮忙看看,通过分析主要是因为Unpblished Bug 9056657导致
数据库启动报错
数据库在open的时候报ORA-00600[kcrf_resilver_log_1]
SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-00600: 内部错误代码, 参数: [kcrf_resilver_log_1], [0x7FF61C56E30], [2], [],
[], [], [], [], [], [], [], []
alert日志报错
Sat Mar 01 18:40:44 2014
alter database open
Beginning crash recovery of 1 threads
parallel recovery started with 3 processes
Started redo scan
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_6432.trc  (incident=61360):
ORA-00600: 内部错误代码, 参数: [kcrf_resilver_log_1], [0x7FF61C56E30], [2], [], [], [], [], [], [], [], [], []
Incident details in: f:\app\administrator\diag\rdbms\orcl\orcl\incident\incdir_61360\orcl_ora_6432_i61360.trc
Aborting crash recovery due to error 600
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_6432.trc:
ORA-00600: 内部错误代码, 参数: [kcrf_resilver_log_1], [0x7FF61C56E30], [2], [], [], [], [], [], [], [], [], []
Errors in file f:\app\administrator\diag\rdbms\orcl\orcl\trace\orcl_ora_6432.trc:
ORA-00600: 内部错误代码, 参数: [kcrf_resilver_log_1], [0x7FF61C56E30], [2], [], [], [], [], [], [], [], [], []
ORA-600 signalled during: alter database open...
分先相关SCN
控制文件scn

控制文件中数据文件scn

数据文件头scn3
通过这里可以知道,数据文件头的scn,控制文件中关于数据文件的scn都表明数据库为正常关闭,且scn值为16574746,但是控制文件中记录数据库SCN的值为16551515,可以判断数据库因为某种原因导致控制文件中的部分scn记录异常.

处理方法
因为控制文件SCN异常,考虑直接重建控制文件或者using backup controlfile方式恢复
SQL> select group#,status,sequence# from v$log;

    GROUP# STATUS            SEQUENCE#
---------- ---------------- ----------
         1 CURRENT                1510
         3 ACTIVE                 1509
         2 ACTIVE                 1508

    GROUP# MEMBER
---------- --------------------------------------------------
         3 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO03.LOG
         2 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO02.LOG
         1 F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG

SQL> recover database using backup controlfile until cancel;
ORA-00279: 更改 16574746 (在 03/01/2014 13:10:11 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\ARCHIVELOG\2014_0
3_01\O1_MF_1_1510_%U_.ARC
ORA-00280: 更改 16574746 (用于线程 1) 在序列 #1510 中


指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
F:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG
已应用的日志。
完成介质恢复。
SQL> alter database open resetlogs;

数据库已更改。

具体参考惜分飞blog:ORA-00600[kcrf_resilver_log_1]异常恢复

Q Q:107644445
Tel:13429648788
Email:dba@xifenfei.com
个人Blog(惜分飞)
提供专业ORACLE技术支持(数据恢复,安装实施,升级迁移,备份容灾,故障诊断,系统优化等)
回复 支持 反对

使用道具 举报

95

主题

266

帖子

1719

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1719
 楼主| 发表于 2014-3-15 20:46:54 | 显示全部楼层
两次相同的ORA-00600[kcrf_resilver_log_1]错误,但是完全不同的处理思路

Q Q:107644445
Tel:13429648788
Email:dba@xifenfei.com
个人Blog(惜分飞)
提供专业ORACLE技术支持(数据恢复,安装实施,升级迁移,备份容灾,故障诊断,系统优化等)
回复 支持 反对

使用道具 举报

4

主题

46

帖子

259

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
259
发表于 2014-3-15 20:50:29 | 显示全部楼层
厉害!学习了
-------------------------------------------
Travel
长路漫漫, 所思在远道
Email:travel.liu@outlook.com
www.traveldba.com
--------------------------------------------
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|ORACLE SOS 技术论坛

GMT+8, 2024-4-17 05:00 , Processed in 0.046297 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表