联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
某个客户在一台机器上装3个oracle数据库,机器蓝屏后,使用pe拷贝出来所有数据文件,redo文件,控制文件等,在尝试恢复过程中,三个库都出现同样的ORA-600[3705]错误,在以前的数据库恢复中对于redo异常,使用过N次类似方法出来都未出问题,但是在ORACLE 9.2.0.1版本中确实出现诡异现象,这里记录处理过程和大家分享
尝试恢复数据库
C:\Documents and Settings\Administrator>set oracle_sid=telnet C:\Documents and Settings\Administrator>sqlplus/nolog SQL*Plus: Release 9.2.0.1.0 - Production on 星期日 5月 25 13:04:29 2014 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> conn / as sysdba 已连接。 SQL> select open_mode from v$database; OPEN_MODE ---------- MOUNTED SQL> alter database open; alter database open * ERROR 位于第 1 行: ORA-01113: 文件 2 需要介质恢复 ORA-01110: 数据文件 2: 'E:\ORACLE\ORADATA\TELNET\UNDOTBS01.DBF' SQL> recover database; ORA-00283: 恢复会话因错误而取消 ORA-00322: 日志 2 (线程 1) 不是当前副本 ORA-00312: 联机日志 2 线程 1: 'E:\ORACLE\ORADATA\TELNET\REDO02.LOG'
redo异常,尝试使用_allow_resetlogs_corruption参数启动数据库
SQL> startup mount pfile='c:\pfile.txt' ORACLE 例程已经启动。 Total System Global Area 126950220 bytes Fixed Size 453452 bytes Variable Size 109051904 bytes Database Buffers 16777216 bytes Redo Buffers 667648 bytes 数据库装载完毕。 SQL> recover database until cancel; ORA-00279: 更改 66763056 (在 05/12/2014 09:50:10 生成) 对于线程 1 是必需的 ORA-00289: 建议: E:\ORACLE\ORA92\RDBMS\ARC00312.001 ORA-00280: 更改 66763056 对于线程 1 是按序列 # 312 进行的 指定日志: {<RET>=suggested | filename | AUTO | CANCEL} cancel ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误 ORA-01194: 文件1需要更多的恢复来保持一致性 ORA-01110: 数据文件 1: 'E:\ORACLE\ORADATA\TELNET\SYSTEM01.DBF' ORA-01112: 未启动介质恢复 SQL> alter database open resetlogs; alter database open resetlogs * ERROR 位于第 1 行: ORA-03113: 通信通道的文件结束
查看alert日志
Sun May 25 15:35:02 2014 ALTER DATABASE RECOVER CANCEL ORA-1547 signalled during: ALTER DATABASE RECOVER CANCEL ... Sun May 25 15:35:02 2014 ALTER DATABASE RECOVER CANCEL ORA-1112 signalled during: ALTER DATABASE RECOVER CANCEL ... Sun May 25 15:35:09 2014 alter database open resetlogs RESETLOGS is being done without consistancy checks. This may result in a corrupted database. The database should be recreated. RESETLOGS after incomplete recovery UNTIL CHANGE 66763056 Resetting resetlogs activation ID 0 (0x0) Sun May 25 15:35:20 2014 Assigning activation ID 2117757301 (0x7e3a6975) Sun May 25 15:35:20 2014 Errors in file e:\oracle\admin\telnet\bdump\telnet_lgwr_12140.trc: ORA-00600: internal error code, arguments: [3705], [1], [1], [1], [1], [], [], [] Sun May 25 15:35:56 2014 Errors in file e:\oracle\admin\telnet\bdump\telnet_lgwr_12140.trc: ORA-00600: internal error code, arguments: [3705], [1], [1], [1], [1], [], [], [] LGWR: terminating instance due to error 600 Instance terminated by LGWR, pid = 12140
创建控制文件继续恢复
SQL> recover database until cancel; ORA-00283: 恢复会话因错误而取消 ORA-00600: 内部错误代码,参数: [2130], [0], [1], [2], [], [], [], [] SQL> alter database backup controlfile to trace as 'c:\ctl.txt'; 数据库已更改。 SQL> alter database open; alter database open * ERROR 位于第 1 行: ORA-03113: 通信通道的文件结束 SQL> startup nomount ORACLE 例程已经启动。 Total System Global Area 126950220 bytes Fixed Size 453452 bytes Variable Size 109051904 bytes Database Buffers 16777216 bytes Redo Buffers 667648 bytes SQL> CREATE CONTROLFILE REUSE DATABASE "TELNET" NORESETLOGS NOARCHIVELOG 2 MAXLOGFILES 50 3 MAXLOGMEMBERS 5 4 MAXDATAFILES 100 5 MAXINSTANCES 1 6 MAXLOGHISTORY 226 7 LOGFILE 8 GROUP 1 'E:\ORACLE\ORADATA\TELNET\REDO01.LOG' SIZE 100M, 9 GROUP 2 'E:\ORACLE\ORADATA\TELNET\REDO02.LOG' SIZE 100M, 10 GROUP 3 'E:\ORACLE\ORADATA\TELNET\REDO03.LOG' SIZE 100M 11 DATAFILE 12 'E:\ORACLE\ORADATA\TELNET\SYSTEM01.DBF', 13 'E:\ORACLE\ORADATA\TELNET\UNDOTBS01.DBF', 14 'E:\ORACLE\ORADATA\TELNET\CWMLITE01.DBF', 15 'E:\ORACLE\ORADATA\TELNET\DRSYS01.DBF', 16 'E:\ORACLE\ORADATA\TELNET\EXAMPLE01.DBF', 17 'E:\ORACLE\ORADATA\TELNET\INDX01.DBF', 18 'E:\ORACLE\ORADATA\TELNET\ODM01.DBF', 19 'E:\ORACLE\ORADATA\TELNET\TOOLS01.DBF', 20 'E:\ORACLE\ORADATA\TELNET\USERS01.DBF', 21 'E:\ORACLE\ORADATA\TELNET\XDB01.DBF' 22 CHARACTER SET ZHS16GBK 23 ; 控制文件已创建 SQL> recover database; ORA-00283: 恢复会话因错误而取消 ORA-00264: 不要求恢复 SQL> alter database open; 数据库已更改。