oracle备份恢复之recover database的四条语句区别

1  recover database using backup controlfile
2  recover database until cancel
3  recover database using backup controlfile until cancel;
4  recover database until cancel using backup controlfile;数据库

本文主要介绍如下四种 恢复方式的含义与区别:
 
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) ...

结果以下:
若是控制文件丢失,restore备份的控制文件后,则必须使用using backup controlfile选项。而until cancel则是不彻底恢复,即current/active redo丢失,或者从restore数据库后某个归档文件缺失,则终止。oracle

结论:
一、适用于restore旧的控制文件,且归档日志和cuurrent/active redo都没有丢失状况。若是一切归档日志和在线日志无缺,能够不丢失数据。相似于recover database
二、当前控制文件未丢失(不须要restore旧的控制文件),此时有归档日志或者current/active log有丢失状况下,则终止。最大可能恢复数据
三、4:我在oracle 10.2.0.4环境下测试效果是相同的,即适用于restore旧的控制文件,在恢复到控制文件备份那刻后,系统会提示应用控制文件备份后的归档日志,若是没有则中止。也是最大可能的恢复数据。测试

 

能够得出结果,若是有旧的数据库备份,在归档日志和在线日志所有保存无缺的状况下,使用recover database或recover database using backup controlfile。则不丢失数据
若是存在备份数据文件restore后,归档日志或者在线日志(active、current)丢失状况下,则能够恢复到丢失的前一个归档日志spa

 

until cancel就是不彻底恢复
须要alter database open resetlogs
数据库打开后须要理解作一个全库备份线程

 

在线日志文件丢失:rest

若是正常关闭数据库,而后启动时报错:日志

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-00313: 没法打开日志组 1 (用于线程 1) 的成员
ORA-00312: 联机日志 1 线程 1:
'C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG'blog


SQL> alter database open resetlogs;
alter database open resetlogs
*
第 1 行出现错误:
ORA-01139: RESETLOGS 选项仅在不彻底数据库恢复后有效io


SQL> recover database until cancel;
完成介质恢复。
SQL> alter database open resetlogs;table

数据库已更改。

相关文章
相关标签/搜索