recover database的四条语句区别

来源:互联网 发布:厦门大学嘉庚学院网络 编辑:程序博客网 时间:2024/04/29 11:54

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;

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

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

可以得出结果,如果有旧的数据库备份,在归档日志和在线日志全部保存完好的情况下,使用recover database或recover database using backup controlfile。则不丢失数据
如果存在备份数据文件restore后,归档日志或者在线日志(active、current)丢失情况下,则可以恢复到丢失的前一个归档日志

until cancel就是不完全恢复
需要alter database open resetlogs
数据库打开后需要理解做一个全库备份

在线日志文件丢失:

如果正常关闭数据库,然后启动时报错:

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'


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


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

数据库已更改。

此时不会有数据丢失

 

原创粉丝点击