控制文件对于数据库来说至关重要,在数据库的恢复过程中,首先需要恢复初始化参数文件,然后就是控制文件的恢复。
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: ===========================================================
IXDBA.NET技术社区
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 存在于磁盘上