探索Oracle不完全恢复之--基于cancel的恢复 第二篇(二)

2014-11-24 18:45:14 · 作者: · 浏览: 1
789761098.dbf


ORA-00280: change 1716930 for thread 1 isin sequence #2




Specify log: {=suggested |filename | AUTO | CANCEL}


auto


ORA-00279: change 1720396 generated at07/30/2012 13:37:21 needed for thread 1


ORA-00289: suggestion :/DBSoft/product/10.2.0/db_1/dbs/arch1_3_789761098.dbf


ORA-00280: change 1720396 for thread 1 isin sequence #3


ORA-00278: log file'/DBSoft/product/10.2.0/db_1/dbs/arch1_2_789761098.dbf' no longer needed forthis recovery




ORA-00308: cannot open archived log'/DBSoft/product/10.2.0/db_1/dbs/arch1_3_789761098.dbf'


ORA-27037: unable to obtain file status


Linux Error: 2: No such file or directory


Additional information: 3




ORA-01547: warning: RECOVER succeeded butOPEN RESETLOGS would get error below


ORA-01194: file 1 needs more recovery to beconsistent


ORA-01110: data file 1:'/DBBak2/oradata/WWL/system01.dbf'



做完恢复之后必须使用resetlogs选项打开数据库


SQL> alter database open resetlogs;


alter database open resetlogs


*


ERROR at line 1:


ORA-01194: file 1 needs more recovery to beconsistent


ORA-01110: data file 1:'/DBBak2/oradata/WWL/system01.dbf'



恢复之后,使用Resetlogs选项,仍无法打开数据库,提示数据文件不一致,System表空间需要进一步的恢复。
当前日志损坏时,不能基于当前的数据库做不完全恢复。只能用以前的备份,做一个基于Cancel的不完全恢复。



重建下控制文件:


SQL> CREATE CONTROLFILE REUSE DATABASE"WWL" RESETLOGS ARCHIVELOG


MAXLOGFILES 16


MAXLOGMEMBERS 3


'/DBBak2/oradata/WWL/redo4a.log',


MAXDATAFILES 100


MAXINSTANCES 8


GROUP 5 (


MAXLOGHISTORY 292


LOGFILE


GROUP 4 (


'/DBBak2/oradata/WWL/redo4a.log',


'/DBBak2/oradata/WWL/redo4b.log'


GROUP 6 (


)SIZE 128M,


GROUP 5 (


'/DBBak2/oradata/WWL/redo5a.log',


'/DBBak2/oradata/WWL/redo5b.log'


'/DBBak2/oradata/WWL/redo7b.log'


)SIZE 128M,


GROUP 6 (


'/DBBak2/oradata/WWL/redo6a.log',


'/DBBak2/oradata/WWL/redo6b.log'


)SIZE 128M,


GROUP 7 (


'/DBBak2/oradata/WWL/redo7a.log',


'/DBBak2/oradata/WWL/redo7b.log'


)SIZE 128M


-- STANDBY LOGFILE


DATAFILE


'/DBBak2/oradata/WWL/system01.dbf',


'/DBBak2/oradata/WWL/undotbs01.dbf',


'/DBBak2/oradata/WWL/sysaux01.dbf',


'/DBBak2/oradata/WWL/users01.dbf',


'/DBBak2/oradata/WWL/wwl001',


'/DBBak2/oradata/WWL/wwl002',


'/DBBak2/oradata/WWL/wwl003'


CHARACTER SET ZHS16CGB231280


34 ;



Control file created.



再次打开,结果还是不行


SQL> alter database open resetlogs;


alter database open resetlogs


*


ERROR at line 1:


ORA-01194: file 1 needs more recovery to beconsistent


ORA-01110: data file 1:'/DBBak2/oradata/WWL/system01.dbf'



可以尝试使用_allow_resetlogs_corruption隐含参数来打开数据库


SQL> alter system set"_allow_resetlogs_corruption"=true scope=spfile;


System altered.



修改完参数之后重启数据库到mount状态


SQL> shutdown immediate


ORA-01109: database not open


Database dismounted.


ORACLE instance shut down.



SQL> startup;


ORACLE instance started.



Total System Global Area 100663296 bytes


Fixed Size 1217884 bytes


Variable Size 88083108 bytes


Database Buffers 8388608 bytes


Redo Buffers 2973696 bytes


Database mounted.


ORA-01589: must use RESETLOGS orNORESETLOGS option for database open



同样以resetlogs模式启动数据库


SQL> alter database open resetlogs;


Database altered.



一定记得关闭该参数


SQL> alter system set"_allow_resetlogs_corruption"=FALSE scope=spfile;


System altered.



让参数关闭生效,再次启动数据库


SQL> startup force;


ORACLE instance started.



Total System Global Area 100663296 bytes


Fixed Size 1217884 bytes


Variable Size