ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 恢复之非归档模式下的恢复

恢复之非归档模式下的恢复

原创 Linux操作系统 作者:zhengbao_jun 时间:2009-02-11 14:16:46 0 删除 编辑

当出现人为故障或部分归档日志文件损坏的情况,可能会进行不完整恢复。不完整恢复包括三种情况,基于取消、基于时间和基于改变。这个例子是说明基于改变的不完整恢复。


如果打算进行不完整恢复,第一件事情就是备份当前的数据库。保证在不完整恢复出现错误时可以用这个备份进行恢复。

首先将数据库关闭,并根据需要进行数据文件还原。

如果当前的控制文件可以反映恢复时间点的状态,则利用当前的控制文件,否则利用合适和控制文件备份进行恢复或重建控制文件。

还原数据文件时,需要保证还原的数据文件备份要比恢复时间点早。原则上,需要还原所有的数据文件,但是对于恢复时间点之后创建的数据文件就不需要进行还原了。

SQL> COL NAME FORMAT A50
SQL> SELECT NAME FROM V$DATAFILE;

NAME
--------------------------------------------------
F:ORACLEORADATATESTSYSTEM01.DBF
F:ORACLEORADATATESTUNDOTBS01.DBF
F:ORACLEORADATATESTINDX01.DBF
F:ORACLEORADATATESTTOOLS02.DBF
F:ORACLEORADATATESTUSERS01.DBF
F:ORACLEORADATATESTYANGTK01.DBF

已选择6行。

SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> SHUTDOWN ABORT
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEBACKUPTEST20060219*.DBF F:ORACLEORADATATEST

SQL> HOST COPY F:ORACLEBACKUPTEST20060219*.CTL 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> SELECT NAME, STATUS FROM V$DATAFILE;

NAME STATUS
-------------------------------------------------- -------
F:ORACLEORADATATESTSYSTEM01.DBF SYSTEM
F:ORACLEORADATATESTUNDOTBS01.DBF ONLINE
F:ORACLEORADATATESTINDX01.DBF ONLINE
F:ORACLEORADATATESTTOOLS01.DBF ONLINE
F:ORACLEORADATATESTUSERS01.DBF ONLINE
F:ORACLEORADATATESTYANGTK01.DBF ONLINE

已选择6行。

例子模仿利用备份中的控制文件进行不完全恢复的过程。

注意:在恢复之前数据文件TOOLS02.DBF,而通过查询备份控制文件中的数据文件名称为TOOLS01.DBF,说明这个文件在备份后修改了名称。由于备份中的数据文件就是TOOLS01.DBF,且使用的是备份的控制文件,因此,不需要修改数据文件的名称。

检查数据文件的状态,将所有需要恢复且处于脱机状态的数据文件联机。本例中所有数据文件均处于联机状态。

SQL> RECOVER DATABASE UNTIL CHANGE 45900000 USING BACKUP CONTROLFILE
ORA-00279: 更改 45822802 (在 02/19/2006 03:07:36 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00001.001
ORA-00280: 更改 45822802 对于线程 1 是按序列 # 1 进行的


指定日志: {=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: 更改 45843504 (在 02/19/2006 10:39:18 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00002.001
ORA-00280: 更改 45843504 对于线程 1 是按序列 # 2 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00001.001'


ORA-00279: 更改 45858111 (在 02/19/2006 22:11:29 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00003.001
ORA-00280: 更改 45858111 对于线程 1 是按序列 # 3 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00002.001'


ORA-00279: 更改 45858519 (在 02/19/2006 22:12:23 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00004.001
ORA-00280: 更改 45858519 对于线程 1 是按序列 # 4 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00003.001'


ORA-00279: 更改 45878533 (在 02/19/2006 22:37:48 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00005.001
ORA-00280: 更改 45878533 对于线程 1 是按序列 # 5 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00004.001'


ORA-00279: 更改 45898798 (在 02/20/2006 06:28:48 生成) 对于线程 1 是必需的
ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00006.001
ORA-00280: 更改 45898798 对于线程 1 是按序列 # 6 进行的
ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00005.001'


已应用的日志。
完成介质恢复。

上面的步骤中将数据库恢复到SCN 45900000时刻。Oracle的恢复到这个SCN后自动退出恢复过程。由于使用的是备份的控制文件,需要加上USING BACKUP CONTROLFILE语句。

最后,以RESETLOGS方式打开数据库即可。

SQL> ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

如果是正式环境下进行的恢复,则在数据库打开后马上进行全库备份。

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

请登录后发表评论 登录
全部评论

注册时间:2008-08-08

  • 博文量
    209
  • 访问量
    865749