如果在nocatalog模式下,rman备份的一些信息是存储在控制文件当中。
如果丢失,不仅数据库打不开,rman的备份信息也丢失,这里需要恢复控制文件
1、做好备份,这里略过
2、关闭数据库,删除控制文件
SQL> host del D:\app\Administrator\oradata\orcl\control*
3、开始恢复
由于控制文件丢失,并且在nocatalog模式下,一些配置信息都变成了默认信息。
C:\Documents and Settings\Administrator>rman target /
恢复管理器: Release 11.1.0.6.0 - Production on 星期三 7月 18 16:45:20 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
连接到目标数据库: ORCL (未装载)
RMAN> set dbid=1311720845《这里一定要记住这个dbid,如果忘了,百度一下吧》
正在执行命令: SET DBID
RMAN> show all;
使用目标数据库控制文件替代恢复目录
db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BZIP2'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
《这里的配置信息全部变成了默认信息》
RMAN> restore controlfile from 'D:\app\Administrator\flash_recovery_area\ORCL\AUTOBACKUP\2012_07_18\O1_MF_S_788972587_80DQXDKL_.BKP';
《这里需要制定控制文件备份路径,因为基础配置信息已经丢失》
启动 restore 于 18-7月 -12
使用通道 ORA_DISK_1
通道 ORA_DISK_1: 正在还原控制文件
通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL01.CTL
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL02.CTL
输出文件名=D:\APP\ADMINISTRATOR\ORADATA\ORCL\CONTROL03.CTL
完成 restore 于 18-7月 -12
RMAN> alter database mount;
《挂在数据库,加载控制文件,因为控制文件里面包含了数据文件、redolog等文件信息》
数据库已装载
释放的通道: ORA_DISK_1
RMAN> recover database;
《恢复数据库,应用备份的控制文件之后生成的redolog》
启动 recover 于 18-7月 -12
启动 implicit crosscheck backup 于 18-7月 -12
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: SID=154 设备类型=DISK
已交叉检验的 4 对象
完成 implicit crosscheck backup 于 18-7月 -12
启动 implicit crosscheck copy 于 18-7月 -12
使用通道 ORA_DISK_1
完成 implicit crosscheck copy 于 18-7月 -12
搜索恢复区中的所有文件
正在编制文件目录...
目录编制完毕
已列入目录的文件的列表
=======================
文件名: D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\AUTOBACKUP\2012_07_18\O1_MF_S_788972587_80DQXDKL_.BKP
使用通道 ORA_DISK_1
正在开始介质的恢复
线程 1 序列 19 的归档日志已作为文件 D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG
存在于磁盘上
归档日志文件名=D:\APP\ADMINISTRATOR\ORADATA\ORCL\REDO01.LOG 线程=1 序列=19
介质恢复完成, 用时: 00:00:01
完成 recover 于 18-7月 -12
RMAN> alter database open resetlogs;
数据库已打开
RMAN> show all;
db_unique_name 为 ORCL 的数据库的 RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BZIP2'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\APP\ADMINISTRATOR\PRODUCT\11.1.0\DB_1\DATABASE\SNCFORCL.ORA'; # default
《一些配置信息又回来了》
RMAN>
SQL> select count(1) from orders;
COUNT(1)
----------
1
SQL>
查看一下有数据了。
如果没有备份,需要对数据库的结构非常了解,通过脚本的方式重建控制文件,这个伤脑细胞的工作,我没有去试验。