产品数据库不会处于非归档模式下。而且冷备份的前提是数据库正常关闭,因此,一般不会存在使用非正常关闭的备份来进行数据库的恢复。
本文只是对这种特殊的情况进行一下测试,在实际中应该不会碰到这种情况。
首先,在另一个SESSION循环插入数据,然后非正常关闭数据库,并在这种情况下备份数据库:
SQL> CONN /@TEST1 AS SYSDBA
已连接。
SQL> SHUTDOWN ABORT
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEORADATATEST1* F:ORACLEBACKUPTEST120060305
Oracle文档并不推荐备份联机日志文件,但是对于非归档模式下,非正常关闭的数据库来说,备份了联机日志文件至少可以保证数据库可以一致性打开。
打开数据库,进行数据的修改:
SQL> STARTUP
ORACLE 例程已经启动。
Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL> SELECT COUNT(*) FROM YANGTK.TEST;
COUNT(*)
----------
20001
SQL> DELETE YANGTK.TEST WHERE ID > 1;
已删除19000行。
SQL> COMMIT;
提交完成。
SQL> ALTER SYSTEM SWITCH LOGFILE;
系统已更改。
下面利用刚才生成的备份进行数据库的恢复,由于数据库只进行了少量的操作,备份之后所有的操作都存在于联机日志文件中,且联机日志文件还没有被重用。
这个时候的恢复可以选择是否恢复备份的联机日志文件。如果不恢复备份的联机日志文件,数据库是可以不丢失数据打开的:
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEBACKUPTEST120060305*.CTL F:ORACLEORADATATEST1
SQL> HOST COPY F:ORACLEBACKUPTEST120060305*.DBF F:ORACLEORADATATEST1
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 USING BACKUP CONTROLFILE
ORA-00279: 更改 36693083 (在 03/05/2006 10:28:00 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORACLE920RDBMSARC01042.001
ORA-00280: 更改 36693083 对于线程 1 是按序列 # 1042 进行的
www.ixdba.net
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
F:ORACLEORADATATEST1REDO01.LOG
ORA-00310: 存档日志包含序列 1043;要求序列 1042
ORA-00334: 归档日志: 'F:ORACLEORADATATEST1REDO01.LOG'
SQL> RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: 更改 36693083 (在 03/05/2006 10:28:00 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORACLE920RDBMSARC01042.001
ORA-00280: 更改 36693083 对于线程 1 是按序列 # 1042 进行的
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
F:ORACLEORADATATEST1REDO03.LOG
ORA-00279: 更改 36724400 (在 03/06/2006 00:57:42 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORACLE920RDBMSARC01043.001
ORA-00280: 更改 36724400 对于线程 1 是按序列 # 1043 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATEST1REDO03.LOG'
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
F:ORACLEORADATATEST1REDO01.LOG
ORA-00279: 更改 36724695 (在 03/06/2006 00:59:07 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORACLE920RDBMSARC01044.001
ORA-00280: 更改 36724695 对于线程 1 是按序列 # 1044 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATEST1REDO01.LOG'
指定日志: {<RET>=suggested | filename | AUTO | CANCEL}
F:ORACLEORADATATEST1REDO02.LOG