ITPub博客

首页 > 数据库 > Oracle > 关于recover database using backup control file

关于recover database using backup control file

Oracle 作者:家有ORACLE老公 时间:2020-02-21 11:34:02 0 删除 编辑

写在前面:我是做实验删除控制文件,然后从备份集里恢复控制文件。打开的时候报错

RMAN> alter database open resetlogs;

 

RMAN-00571: ===========================================================

RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571: ===========================================================

RMAN-03002: failure of alter db command at 02/20/2020 11:40:24

ORA-01190: control file or data file 1 is from before the last RESETLOGS

ORA-01110: data file 1: '/ooradata/system01.dbf'

 

(当前控制文件是上一次RESETLOGS的, 决定用ADJUST_SCN来调整SCN. 这个需要设置_allow_resetlogs_corruption参数, 前面曾经设置过就无需再设置.)


本文主要介绍以下四种 恢复 方式的含义与区别:

recover database 或者 recover tablespace, recover datafile时


1 recover database using backup controlfile(用冷备份恢复情况)

如果丢失当前控制文件,用冷 备份的控制文件恢复的时候,用来告诉 oracle,不要以controlfile中的scn作为恢复的终点;


2. recover database until cancel  (没有一致性停数据库:情况)

如果丢失current/active redo的时候,手动指定终点。


3. recover database using backup controlfile until cancel;(一致性停数据库:情况)

如果丢失当前controlfile并且current/active redo都丢失,会先去自动应用归档日志, 可以实现最大的恢复, 恢复到我不想恢复为止;


4. recover database until cancel using backup controlfile;

如果丢失当前controlfile并且current/active redo都丢失,以旧的redo中的scn为恢复终点。因为没有应用归档日志,所以会丢失数据。


要理解recover database using backup controlfile,先理解 recover database,也就是说,不加using backup controlfile的情况。

在普通的recover database 或者 recover tablespace, recover datafile时, Oracle会以当前controlfile所纪录的SCN为准,利用archive log和 redo log的redo entry, 把相关的datafile的 block恢复到“ 当前controlfile所纪录的SCN”


而某些情况下,Oracle需要把数据恢复到比当前controlfile所纪录的SCN还要 靠后的位置(比如说,control file是backup controlfile , 或者 controlfile是根据trace create的。),这时候,就需要用using backup controlfile. 恢复就不会受“当前controlfile所纪录的SCN”的限制。

这时候的限制就来自于你的语句(until time , until scn),或者可用的archive log(until cancel) ...

如果不加限制就要恢复到 当先联机日志的最大SCN


*上面都讨论的是终点, 恢复的 起点 的问题:

1、recover database 这个呢很简单,就是比对system表空间的启动SCN(v$datafile_header)和控制文件中记录的SCN(v$datafile),如果一直则不用恢复,不一致就从 system数据文件的启动SCN开始整体的恢复~~~  也就是说用它的时候基本就是 控制文件比数据文件往后,然后 恢复到控制文件所记录的数据文件的SCN

2 recover database using backup controlfile   也是先从system的启动scn开始恢复,可以到昨天,前天(control>数据的)


recover database using backup controlfile;      ----不加限制条件就要恢复到我的联机日志状态,否则我resetlogs打开数据库就报错:

 ORA-01113: file 1 needs media recovery

 ORA-01110: data file 1: '/u01/app/oracle/oradata/test/system01.dbf'


3 recover database using backup controlfile until cancel;     追新的数据文件的scn(control<数据)   --------这句话就是:恢复到我不想恢复为止(我可以随意的用resetlogs打开数据库)


当前系统scn

select current_scn from v$database;


当前数据文件SCN,在控制文件中。

select name,checkpoint_change# from v$datafile;


数据文件头的scn也叫做数据文件的启动scn,

select name,checkpoint_change# from v$datafile_header;



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959246/viewspace-2676565/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: grant授权
请登录后发表评论 登录
全部评论

注册时间:2020-01-06

  • 博文量
    34
  • 访问量
    49012