肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > oracle备份信息在控制文件丢失 恢复之利用备份在所有控制文件丢失情况下恢复(一)...

oracle备份信息在控制文件丢失 恢复之利用备份在所有控制文件丢失情况下恢复(一)...

时间:2021-12-13 07:03:57

相关推荐

如果全部控制文件丢失,但是包含以前控制文件的备份,这时可以利用备份的控制文件进行恢复,不过在恢复后需要以RESETLOGS方式打开数据库。

根据联机重做日志文件是否可用和数据文件是否是最新的可以分为四种不同情况,这篇文章描述的是,联机重做日志可用,且数据文件是最新的情况。

一般重做日志全部丢失的话,数据库肯定会马上关闭。本测试为了模拟联机日志中包含待恢复数据的情况,在后台运行存储过程插入数据时,在另外的session使用SHUTDOWN ABORT关闭数据库。

SQL> CONN /@TEST AS SYSDBA

已连接。

SQL> SHUTDOWN ABORT

ORACLE 例程已经关闭。

数据库关闭后删除所有控制文件。

SQL> HOST DEL F:ORACLEORADATATEST*.CTL

然后利用备份的控制文件进行恢复

SQL> HOST COPY F:ORACLEBACKUPTEST0215*.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

数据库装载完毕。

利用备份的控制文件启动,需要使用USING BACKUP CONTROLFILE语句。

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL

ORA-00279: 更改 45609576 (在 02/15/ 19:28:34 生成) 对于线程 1 是必需的

ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00059.001

ORA-00280: 更改 45609576 对于线程 1 是按序列 # 59 进行的

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

AUTO

ORA-00279: 更改 45610708 (在 02/16/ 01:35:15 生成) 对于线程 1 是必需的

ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00060.001

ORA-00280: 更改 45610708 对于线程 1 是按序列 # 60 进行的

ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00059.001'

ORA-00279: 更改 45610901 (在 02/16/ 01:36:55 生成) 对于线程 1 是必需的

ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00061.001

ORA-00280: 更改 45610901 对于线程 1 是按序列 # 61 进行的

ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00060.001'

ORA-00279: 更改 45612925 (在 02/16/ 01:39:10 生成) 对于线程 1 是必需的

ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00062.001

ORA-00280: 更改 45612925 对于线程 1 是按序列 # 62 进行的

ORA-00278: 此恢复不再需要日志文件 'F:ORACLEORADATATESTARCHIVEARC00061.001'

ORA-00308: 无法打开存档日志 'F:ORACLEORADATATESTARCHIVEARC00062.001'

ORA-27041: 无法打开文件

OSD-04002: 无法打开文件

O/S-Error: (OS 2) 系统找不到指定的文件。

ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误

ORA-01194: 文件1需要更多的恢复来保持一致性

ORA-01110: 数据文件 1: 'F:ORACLEORADATATESTSYSTEM01.DBF'

最后出现的错误是由于SHUTDOWN ABORT后,使用备份的控制文件造成的。Oracle需要应用当前的重做日志文件来进行恢复,但是由于使用了备份的控制文件,备份之后的归档日志信息丢失,因此,这时需要手工输入需要恢复的联机重做日志文件。

其实这个时候是可以通过REDO的循环使用推断出最后需要使用的联机日志的。

SQL> SELECT GROUP#, SEQUENCE#, STATUS FROM V$LOG;

GROUP# SEQUENCE# STATUS

---------- ---------- ----------------

1 59 CURRENT

2 57 INACTIVE

3 58 INACTIVE

这时已经可以推断GROUP2将是60,GROUP3是61,而GROUP1则是62。不过在输入重做日志进行恢复时,即使输入错文件也没有关系,Oracle会提示错误。如果输入正确的重做日志,则Oracle会完成介质恢复。

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL

ORA-00279: 更改 45612925 (在 02/16/ 01:39:10 生成) 对于线程 1 是必需的

ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00062.001

ORA-00280: 更改 45612925 对于线程 1 是按序列 # 62 进行的

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

F:ORACLEORADATATESTREDO03.LOG

ORA-00310: 存档日志包含序列 61;要求序列 62

ORA-00334: 归档日志: 'F:ORACLEORADATATESTREDO03.LOG'

ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误

ORA-01194: 文件1需要更多的恢复来保持一致性

ORA-01110: 数据文件 1: 'F:ORACLEORADATATESTSYSTEM01.DBF'

SQL> RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL

ORA-00279: 更改 45612925 (在 02/16/ 01:39:10 生成) 对于线程 1 是必需的

ORA-00289: 建议: F:ORACLEORADATATESTARCHIVEARC00062.001

ORA-00280: 更改 45612925 对于线程 1 是按序列 # 62 进行的

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

F:ORACLEORADATATESTREDO01.LOG

已应用的日志。

完成介质恢复。

SQL> ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

恢复到这里已经完成,现在需要做的是马上进行数据库的备份。

如果觉得《oracle备份信息在控制文件丢失 恢复之利用备份在所有控制文件丢失情况下恢复(一)...》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。