当恢复过程进行时,可能会出于某种原因中断恢复过程。在恢复过程中,Oracle提示需要确认重做日志文件时,输入CANCEL,就可以中断恢复操作。
恢复中断以后,可以使用RECOVER命令继续进行恢复。如果数据库恢复到一个一致性状态,还可以选择使用ALTER DATABASE OPEN READ ONLY方式打开数据库。以READ ONLY方式打开数据库不会产生任何新的修改,因此数据库关闭后可以继续恢复。
一个中断恢复操作的简单的例子:
SQL> CONN YANGTK/YANGTK@TEST
已连接。
SQL> SELECT * FROM TEST_BACKUP;
ID
----------
1
2
SQL> DELETE TEST_BACKUP;
已删除2行。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系统已更改。
SQL> INSERT INTO TEST_BACKUP VALUES (1);
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系统已更改。
SQL> INSERT INTO TEST_BACKUP VALUES (2);
已创建 1 行。
SQL> COMMIT;
提交完成。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系统已更改。
SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEBACKUPTEST_AFT_RESETLOGS*.DBF F:ORACLEORADATATEST
SQL> STARTUP MOUNT
ORACLE 例程已经启动。
Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> RECOVER DATABASE UNTIL CANCEL
ORA-00279: 更改 46449467 (在 03/13/2006 00:50:09 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00004.001
ORA-00280: 更改 46449467 对于线程 1 是按序列 # 4 进行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 46449678 (在 03/13/2006 12:50:18 生成) 对于线程 1 是必需的
IXDBA.NET技术社区
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00005.001
ORA-00280: 更改 46449678 对于线程 1 是按序列 # 5 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00004.001'
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 46449682 (在 03/13/2006 12:50:18 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00006.001
ORA-00280: 更改 46449682 对于线程 1 是按序列 # 6 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00005.001'
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
ORA-00279: 更改 46449688 (在 03/13/2006 12:50:24 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00007.001
ORA-00280: 更改 46449688 对于线程 1 是按序列 # 7 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00006.001'
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
CANCEL
介质恢复已取消。
SQL> ALTER DATABASE OPEN READ ONLY;
ALTER DATABASE OPEN READ ONLY
*
ERROR 位于第 1 行:
ORA-16005: 数据库需要恢复
数据库无法打开的原因是数据库处于一个不一致的状态,控制文件和数据文件的SCN不一致。如果使用备份的控制文件恢复,则可以保证数据文件和控制文件处于一致性的状态。
SQL> SHUTDOWN IMMEDIATE
ORA-01109: 数据库未打开
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEBACKUPTEST_AFT_RESETLOGS*.DBF F:ORACLEORADATATEST
SQL> HOST COPY F:ORACLEBACKUPTEST_AFT_RESETLOGS*.CTL F:ORACLEORADATATEST
SQL> STARTUP MOUNT