控制文件对于数据库来说至关重要,在数据库的恢复过程中,首先需要恢复初始化参数文件,然后就是控制文件的恢复。
RMAN采用CATALOG方式还是NOCATALOG方式,以及是否启用了AUTOBACKUP,决定了控制文件的恢复方法。
RMAN备份恢复之控制文件的恢复(一):http://yangtingkun.itpub.net/post/468/305766
RMAN备份恢复之控制文件的恢复(二):http://yangtingkun.itpub.net/post/468/312822
这篇文章介绍NOCATALOG方式下且没有自动备份的情况下,利用普通备份来恢复控制文件。
如果没有控制文件的自动备份,那么恢复控制文件就要麻烦得多。不过如果可以确定控制文件的确切备份集,那么控制文件也是可以恢复的。
如果无法确定控制文件所在地备份集的话,可以根据备份集的生成时间,从后向前依次尝试。
SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> host move f:oracleoradata est1control01.ctl f:oracleoradata est1control01.bak
SQL> host move f:oracleoradata est1control02.ctl f:oracleoradata est1control02.bak
SQL> host move f:oracleoradata est1control03.ctl f:oracleoradata est1control03.bak
关闭数据库并删除控制文件后,下面尝试通过RMAN恢复控制文件:
F:>rman target /@test1
恢复管理器: 版本9.2.0.4.0 - Production
Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.
已连接到目标数据库 (未启动)
RMAN> startup nomount
Oracle 例程已启动
系统全局区域总计 110173900 字节
Fixed Size 454348 字节
Variable Size 83886080 字节
Database Buffers 25165824 字节
Redo Buffers 667648 字节
RMAN> restore controlfile from 'F:oracleackupUIO2TN0_1_1';
启动 restore 于 29-7月 -07
正在使用目标数据库控制文件替代恢复目录
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=11 devtype=DISK
通道 ORA_DISK_1: 正在恢复控制文件
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/29/2007 22:36:13
ORA-19615: 有些文件在备份集中未找到
ORA-19613: 在备份集中未找到数据文件 0
RMAN> restore controlfile from 'F:oracleackupTINM3UD_1_1';
启动 restore 于 29-7月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复控制文件
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 07/29/2007 22:36:30
ORA-19626: 备份集类型为archived log - 无法在此对话中处理
RMAN> restore controlfile from 'F:oracleoracle920databaseSINJCDC_1_1';
启动 restore 于 29-7月 -07
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在恢复控制文件
通道 ORA_DISK_1: 恢复完成
正在复制控制文件
输出文件名=F:ORACLEORADATATEST1CONTROL01.CTL
输出文件名=F:ORACLEORADATATEST1CONTROL02.CTL
输出文件名=F:ORACLEORADATATEST1CONTROL03.CTL
完成 restore 于 29-7月 -07
找到正确的备份集并恢复控制文件后,就可以尝试恢复数据库并打开了。
RMAN> alter database mount;
数据库已加载
RMAN> recover database;
启动 recover 于 29-7月 -07
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 2 已作为文件 F:ORACLEORADATATEST1REDO01.LOG 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 F:ORACLEORADATATEST1REDO02.LOG 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 F:ORACLEORADATATEST1REDO03.LOG 存在于磁盘上
无法找到存档日志
存档日志线程 =1 序列=0
Oracle 错误:
ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误
ORA-01152: 文件 1 没有从完备的旧备份中恢复
ORA-01110: 数据文件 1: 'F:ORACLEORADATATEST1SYSTEM01.DBF'
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 07/29/2007 22:40:20
RMAN-06054: media recovery requesting unknown log: thread 1 scn 58954797
RMAN> catalog archivelog 'F:oracleoradata est1ARCHIVELOGARC00001.001';
已编目的存档日志
存档日志文件名 =F:ORACLEORADATATEST1ARCHIVELOGARC00001.001 记录 ID=42 时间
戳 =629246535
RMAN> recover database;
启动 recover 于 29-7月 -07
使用通道 ORA_DISK_1
正在开始介质的恢复
存档日志线程 1 序列 1 已作为文件 F:ORACLEORADATATEST1ARCHIVELOGARC00001.001
存在于磁盘上
存档日志线程 1 序列 2 已作为文件 F:ORACLEORADATATEST1REDO01.LOG 存在于磁盘上
存档日志线程 1 序列 3 已作为文件 F:ORACLEORADATATEST1REDO02.LOG 存在于磁盘上
存档日志线程 1 序列 4 已作为文件 F:ORACLEORADATATEST1REDO03.LOG 存在于磁盘上
存档日志文件名 =F:ORACLEORADATATEST1ARCHIVELOGARC00001.001 线程 =1 序列 =0
存档日志文件名 =F:ORACLEORADATATEST1REDO01.LOG 线程 =1 序列 =2
存档日志文件名 =F:ORACLEORADATATEST1REDO02.LOG 线程 =1 序列 =3
存档日志文件名 =F:ORACLEORADATATEST1REDO03.LOG 线程 =1 序列 =4
完成介质的恢复
完成 recover 于 29-7月 -07
RMAN> alter database open resetlogs;
数据库已打开
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/4227/viewspace-69368/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/4227/viewspace-69368/