墨墨导读:客户的一套开发环境,清理空间时redo被运维人员当作log误删除,一线同事先接手处理,过程中遇到问题升级本文做出分析。
接手后,数据库处于mount状态,之前恢复过程中已经做过resetlogs的操作,也设置了"_allow_resetlogs_corruption"隐藏参数为true,目前直接开库会提示需要恢复,重新进行resetlogs时报错ORA-600 [2662],起初看到这个错误心中略有些放松,根据经验,推下SCN就好了:
SQL> alter database open;alter database open*ERROR at line 1:ORA-01113: file 1 needs media recoveryORA-01110: data file 1:'/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-SYSTEM_FNO-1_1bujd4ob.dbf'
SQL> recover database ;ORA-00283: recovery session canceled due to errorsORA-00399: corrupt change description in redo logORA-00353: log corruption near block 3 change 32581427074 time 08/25/202011:39:04ORA-00312: online log 5 thread 1: '/oradata/ODSDB/datafile/redo05.log'
SQL> recover datafile 1;ORA-00283: recovery session canceled due to errorsORA-00399: corrupt change description in redo logORA-00353: log corruption near block 3 change 32581427074 time 08/25/202011:39:04ORA-00312: online log 5 thread 1: '/oradata/ODSDB/datafile/redo05.log'
SQL> alter database open resetlogs;alter database open resetlogs*ERROR at line 1:ORA-01139: RESETLOGS option only valid after an incomplete database recovery
SQL> recover database using backup controlfile until cancel;ORA-00279: change 32581427072 generated at needed for thread 1
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}autoORA-00266: name of archived log file needed
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error belowORA-01194: file 1 needs more recovery to be consistentORA-01110: data file 1:'/oradata/ODSDB/datafile/data_D-ODSDB_I-3532120983_TS-SYSTEM_FNO-1_1bujd4ob.dbf'
SQL> alter database open resetlogs; alter database open resetlogs*ERROR at line 1:ORA-00603: ORACLE server session terminated by fatal errorORA-00600: internal error code, arguments: