一.准备工作
1. 数据库原ORACLE_HOME:/u01/app/oracle
2. 显示目前RMAN状态:注意设置controlfile autobackup 为 on
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/oracle_recovers/rman/auto_recovers/%F';
3. 开始任意备份,此时由于controlfile autobackup on ,将自动备份数据控制文件
Starting Control File and SPFILE Autobackup at 06-AUG-13
piece handle=/oracle_recovers/rman/auto_recovers/c-1257749144-20130806-02 comment=NONE
记住自动备份控制文件(和spfile)的位置在=/oracle_recovers/rman/auto_recovers/c-1257749144-20130806-02
4. 关闭数据库---shutdown immediate
5. 移动控制文件(在此操作前请勿做类似添加数据文件,修改表空间存储等操作,以免造成控制文件和备份不统一)
mv /u01/app/oracle/oradata/orcl/control01.ctl /oracle_recovers/
二. 恢复操作
1. startup nomount ---- 只能以nomount方式启动
2. 以nocatalog启动RMAN ---若不做步骤2则启动不成功
3. 查看配置,这个时候由于控制文件丢失,所有配置文件都为default
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name ORCL are:
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
4. 尝试恢复
RMAN> restore controlfile from autobackup;
Starting restore at 06-AUG-13
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=152 device type=DISK
recovery area destination: /oracle_recovers/oracle_flash_recover/ORCL/flashback
database name (or database unique name) used for search: ORCL
channel ORA_DISK_1: no AUTOBACKUPS found in the recovery area
AUTOBACKUP search with format "%F" not attempted because DBID was not set
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 08/06/2013 16:47:10
RMAN-06172: no AUTOBACKUP found or specified handle is not a valid copy or piece
分析失败原因:由于之前自定义了控制文件备份地址:/oracle_recovers/rman/auto_recovers/,而现在使用默认配置,此默认位置和db_recovery_file_dest有关
5. 使用之前自定义位置恢复----成功
restore controlfile from '/oracle_recovers/rman/auto_recovers/c-1257749144-20130805-01';
6 重新打开数据库—建议使用resetlogs模式打开
alter database open resetlogs
三.总结
1. 设置控制文件自动备份十分必要,能保证每次控制文件内容改动时都自动备份,保证控制文件最新。
2. 最好自己设置控制文件备份位置,默认使用db_recovery_file_dest.所以如果自定义备份位置,一定要记住,在恢复时,由于控制文件丢失,所有配置都恢复为默认,只能手动显式输入,而你当初的备份位置是不可查的,所以在备份后,一定要记录在操作文档中。
3. 恢复后应使用alter database open resetlogs打开。