联系:手机/微信(+86 17813235971) QQ(107644445)
标题:redo异常 ORA-600 kclchkblk_4 故障恢复
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
朋友和我说,他们数据库由于存储控制器异常,导致数据库无法正常启动.
数据库recover database 提示需要已经覆盖的redo
-bash-3.2$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Mon Nov 3 17:23:35 2014 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, Real Application Clusters, Data Mining and Real Application Testing options SQL> recover database; ORA-00279: change 1639063379 generated at 11/01/2014 12:06:33 needed for thread 2 ORA-00289: suggestion : /export/home/oracle/product/10.2.0/db_1/dbs/arch2_29919_790965041.dbf ORA-00280: change 1639063379 for thread 2 is in sequence #29919 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled. SQL> select thread#,group#,sequence# from v$log; THREAD# GROUP# SEQUENCE# ---------- ---------- ---------- 1 1 30261 1 2 30262 1 3 30258 1 4 30259 1 5 30260 2 6 29966 2 7 29967 2 8 29968 2 9 29969 2 10 29970 10 rows selected. SQL> select group#,member from v$logfile; GROUP# MEMBER ---------- -------------------------------------------------- 1 /dev/md/oradg/rdsk/d115 2 /dev/md/oradg/rdsk/d116 3 /dev/md/oradg/rdsk/d117 4 /dev/md/oradg/rdsk/d118 5 /dev/md/oradg/rdsk/d119 6 /dev/md/oradg/rdsk/d120 7 /dev/md/oradg/rdsk/d121 8 /dev/md/oradg/rdsk/d122 9 /dev/md/oradg/rdsk/d123 10 /dev/md/oradg/rdsk/d124 10 rows selected. SQL> recover database; ORA-00279: change 1639063379 generated at 11/01/2014 12:06:33 needed for thread 2 ORA-00289: suggestion : /export/home/oracle/product/10.2.0/db_1/dbs/arch2_29919_790965041.dbf ORA-00280: change 1639063379 for thread 2 is in sequence #29919 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel Media recovery cancelled.
数据库没归档,redo覆盖,无法继续恢复,使用_allow_resetlogs_corruption屏蔽前滚,继续恢复
SQL> startup mount pfile='/tmp/pfile.txt'; ORACLE instance started. Total System Global Area 2097152000 bytes Fixed Size 2053120 bytes Variable Size 1090522112 bytes Database Buffers 855638016 bytes Redo Buffers 148938752 bytes Database mounted. SQL> recover database until cancel; ORA-00279: change 1639063379 generated at 11/01/2014 12:58:20 needed for thread 1 ORA-00289: suggestion : /export/home/oracle/product/10.2.0/db_1/dbs/arch1_30262_790965041.dbf ORA-00280: change 1639063379 for thread 1 is in sequence #30262 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} cancel ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/dev/md/oradg/rdsk/d105' ORA-01112: media recovery not started SQL> alter database open resetlogs; alter database open resetlogs * ERROR at line 1: ORA-01092: ORACLE instance terminated. Disconnection forced
查看alert日志
Mon Nov 03 17:37:11 CST 2014 Completed crash recovery at Thread 2: logseq 1, block 3, scn 1639083385 0 data blocks read, 0 data blocks written, 1 redo blocks read Picked broadcast on commit scheme to generate SCNs Mon Nov 03 17:37:12 CST 2014 Thread 2 advanced to log sequence 2 (thread open) Thread 2 opened at log sequence 2 Current log# 7 seq# 2 mem# 0: /dev/md/oradg/rdsk/d121 Successful open of redo thread 2 Mon Nov 03 17:37:12 CST 2014 MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Mon Nov 03 17:37:13 CST 2014 SMON: enabling cache recovery Mon Nov 03 17:37:13 CST 2014 Errors in file /export/home/oracle/admin/iesdb/udump/iesdb2_ora_15700.trc: ORA-00600: internal error code, arguments: [kclchkblk_4], [0], [1640589405], [0], [1639117006], [], [], [] Mon Nov 03 17:37:14 CST 2014 Errors in file /export/home/oracle/admin/iesdb/udump/iesdb2_ora_15700.trc: ORA-00600: internal error code, arguments: [kclchkblk_4], [0], [1640589405], [0], [1639117006], [], [], [] Mon Nov 03 17:37:14 CST 2014 Error 600 happened during db open, shutting down database USER: terminating instance due to error 600 Instance terminated by USER, pid = 15700 ORA-1092 signalled during: alter database open...
参考:In 10.1.0.2: ORA-600 [kclchkblk_4] and ORA-600 [2662] After Recovery of Database (Doc ID 275902.1),删除tempfile继续打开数据库
SQL> alter database tempfile '/dev/md/oradg/rdsk/d109' drop; Database altered. SQL> c/109/110 1* alter database tempfile '/dev/md/oradg/rdsk/d110' drop SQL> / Database altered. SQL> alter database open; alter database open * ERROR at line 1: ORA-01092: ORACLE instance terminated. Disconnection forced
数据库依然报ORA-00600kclchkblk_4]错误,因此解决该问题选择使用bbed修改文件头scn来完成,具体参考类似文章:使用bbed修复损坏datafile header
-bash-3.2$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.5.0 - Production on Mon Nov 3 17:41:17 2014 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to an idle instance. SQL> startup pfile='/tmp/pfile.txt' mount; ORACLE instance started. Total System Global Area 2097152000 bytes Fixed Size 2053120 bytes Variable Size 1090522112 bytes Database Buffers 855638016 bytes Redo Buffers 148938752 bytes Database mounted. SQL> alter database open; Database altered. SQL> alter tablespace temp add tempfile '/dev/md/oradg/rdsk/d109' size 8388608000 autoextend off; Tablespace altered. SQL> alter tablespace temp add tempfile '/dev/md/oradg/rdsk/d110' size 8388608000 autoextend off; Tablespace altered. SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 2097152000 bytes Fixed Size 2053120 bytes Variable Size 1090522112 bytes Database Buffers 855638016 bytes Redo Buffers 148938752 bytes Database mounted. Database opened.
至此数据库恢复完成,建议逻辑方式重建数据库