ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 恢复之基于取消的不完整恢复

恢复之基于取消的不完整恢复

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

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


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

备份完整后,将数据库关闭,并根据需要进行数据文件还原。

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

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

SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> SHUTDOWN ABORT
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEBACKUPTEST20060219*.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> ALTER DATABASE RENAME FILE 'F:ORACLEORADATATESTTOOLS02.DBF'
2 TO 'F:ORACLEORADATATESTTOOLS01.DBF';

数据库已更改。

例子模仿TOOLS02.DBF所处位置无法恢复,通过修改控制文件中数据文件名称的方法将数据文件还原到其他位置。

SQL> COL NAME FORMAT A50
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行。

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

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


指定日志: {=suggested | filename | AUTO | CANCEL}

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'


指定日志: {=suggested | filename | AUTO | CANCEL}

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'


指定日志: {=suggested | filename | AUTO | CANCEL}

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'


指定日志: {=suggested | filename | AUTO | CANCEL}
CANCEL
介质恢复已取消。

上面的步骤中应用了三个联机日志文件后,取消会恢复。

如果这个步骤报错,数据库无法恢复到一致性状态,则可以通过查询V$RECOVER_FILE视图确定需要恢复的数据文件。

SQL> SELECT NAME, ONLINE_STATUS FROM V$RECOVER_FILE A, V$DATAFILE B
2 WHERE A.FILE# = B.FILE#;

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

已选择6行。

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

SQL> ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

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

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

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

注册时间:2008-08-08

  • 博文量
    209
  • 访问量
    865787