当前位置: 代码迷 >> Oracle面试 >> 新手问个until cancel恢复出错有关问题
  详细解决方案

新手问个until cancel恢复出错有关问题

热度:403   发布时间:2016-04-24 03:28:47.0
新手问个until cancel恢复出错问题
为了测试恢复数据库(归档模式)

SQL> shutdown abort
SQL> startup                --可以起来
SQL> shutdown abort
SQL> startup mount 

SQL> recover database using backup controlfile until cancel;ORA-00279: change 503362 generated at 02/07/2012 17:54:35 needed for thread 1
ORA-00289: suggestion :
/home/oracle/oracle/product/10.2.0/flash_recovery_area/ORCL/archivelog/2012_02_0
7/o1_mf_1_6_%u_.arc
ORA-00280: change 503362 for thread 1 is in sequence #6


Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancelORA-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:
'/home/oracle/oracle/product/10.2.0/oradata/orcl/system01.dbf'


ORA-01112: media recovery not started


SQL> alter database open resetlogs;alter database open resetlogs
*
ERROR at line 1:
ORA-01194: file 1 needs more recovery to be consistent
ORA-01110: data file 1:
'/home/oracle/oracle/product/10.2.0/oradata/orcl/system01.dbf'




试过数据库直接startup可以起来,或者用recover database也可以完全恢复
为什么用cancel不完全恢复就不行呢,选auto还是cancel都起不来。
之后启动就提示要resetlog开启,resetlog开启又提示要恢复system01.dbf,一直循环。

最后设置"_allow_resetlogs_corruption"=true 可以起来
只有10分才在这里问,大家多多包涵。

------解决方案--------------------
你直接abort,数据库可能需要实例恢复,也可能需要介质恢复(概率不大)
然后你直接输入了cancel,数据库就没有进行实例恢复了,当然不能启动了


startup自动做实例恢复
recover database 做介质恢复,然后你在open的时候做实例恢复
_allow_resetlogs_corruption 屏蔽掉了应用redo,所以相当实例恢复被屏蔽(不太准确,但是确实有这个效果)
------解决方案--------------------
你abort之后,启动的时候看看alert日志里是否有实例恢复或者介质恢复的信息,如果有实例或者介质恢复,必须等恢复之后进行recover

顺便说下你要进行Until cancel移除部分归档,recover database的时候就会报错的,然后再进行recover cancel