开启 控制文件自动备份下,参数文件、控制文件全部丢失恢复

本文介绍如何使用Oracle RMAN工具进行控制文件(auto backup)与参数文件(spfile)的恢复操作。包括配置自动备份功能、模拟丢失场景、执行恢复流程等关键步骤。

环境说明:本实验在开启 控制文件自动备份的前提下,利用 autobackup 模拟恢复参数文件全部丢失与控制文件全部丢失。
1.开启 AUTOBACKUP 功能
--查看 CONTROLFILE AUTOBACKUP 参数
RMAN> show all;
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
--开启 CONTROLFILE AUTOBACKUP 参数 
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;
new RMAN configuration parameters are successfully stored
--查看 CONTROLFILE AUTOBACKUP 参数
RMAN> show all;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
--做个全库+归档备份
[oracle@11g ~]$ mkdir rmanback
[oracle@11g ~]$ cd rmanba
[oracle@11g rmanbak]$ pwd
/home/oracle/rmanbak
RMAN>
run{
sql 'alter system archive log current';
allocate channel ch1 type disk;
allocate channel ch2 type disk;
backup incremental level 0 database plus archivelog delete input
format '/home/oracle/rmanbak/db_%d_%U'
tag=db_inc_0;
release channel ch1;
release channel ch2;
}
说明: autobackup 开启的时候, spfile 与 controlfile 的默认备份位置在 FRA ,而不是 format 指定的备份路径。

2.模拟 SPFILE 丢失 ,恢复 。
--模拟 SPFILE 丢失,且 shutdown
[oracle@11g rmanbak]$ cd $ORACLE_HOME/dbs
[oracle@11g dbs]$ ll
total 9852
-rw-rw----. 1 oracle oinstall 1544 Mar 18 05:05 hc_orcl.dat
-rw-r--r--. 1 oracle oinstall 5955 Mar 11 18:10 init.ora
-rw-r--r--. 1 oracle oinstall 5949 Mar 15 11:05 initorcl.ora
-rw-r-----. 1 oracle oinstall 24 Mar 11 16:54 lkORCL
-rw-r-----. 1 oracle oinstall 1536 Mar 11 16:35 orapworcl
-rw-r-----. 1 oracle oinstall 10043392 Mar 18 14:51 snapcf_orcl.f
-rw-r-----. 1 oracle oinstall 13824 Mar 18 14:48 spfileorcl.ora
[oracle@11g dbs]$ rm -rf spfileorcl.ora
[oracle@11g dbs]$ rm -rf initorcl.ora
[oracle@11g dbs]$ rm -rf init.ora
SQL> shutdown immediate;
SQL> startup;
ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0.4/dbhome_1/dbs/initorcl.ora'
RMAN> set dbid= 1388303183

executing command: SET DBID
RMAN> startup nomount;

startup failed: ORA-01078: failure in processing system parameters
LRM-00109: could not open parameter file '/home/oracle/app/oracle/product/11.2.0.4/dbhome_1/dbs/initorcl.ora'

starting Oracle instance without parameter file for retrieval of spfile
Oracle instance started
Total System Global Area 1068937216 bytes
Fixed Size 2260088 bytes
Variable Size 281019272 bytes
Database Buffers 780140544 bytes
Redo Buffers 5517312 bytes

RMAN> list backup of spfile;
--通过自动备份恢复
RMAN> restore spfile to '/home/oracle/spfileorcl.ora' from autobackup;
--通过某个备份文件恢复
RMAN> restore spfile to '/home/oracle/spfileorcl.ora' from '/home/oracle/app/flash_recovery_area/ORCL/autobackup/2015_03_18/o1_mf_s_874680707_bjmlb45y_.bkp'; 
Finished restore at 18-MAR-15
[oracle@11g ~]$ pwd
/home/oracle
[oracle@11g dbs]$ ll
-rw-r-----. 1 oracle oinstall 13824 Mar 18 15:38 spfileorcl.ora
[oracle@11g ~]$ cp spfileorcl.ora $ORACLE_HOME/dbs
RMAN> shutdown immediate;
RMAN> startup;
database opened

3. 模拟Controlfile全部丢失,恢复 。
SQL> show parameter control_file
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_file_record_keep_time integer 7
control_files string /home/oracle/app/oradata/orcl/
control01.ctl, /home/oracle/ap
p/flash_recovery_area/orcl/con
trol02.ctl

[oracle@11g dbs]$ cd /home/oracle/app/oradata/orcl
[oracle@11g orcl]$ mv control01.ctl control01.ctl.bak
[oracle@11g orcl]$ cd /home/oracle/app/flash_recovery_area/orcl/
[oracle@11g orcl]$ mv control02.ctl control02.ctl.bak
SQL> startup;
ORACLE instance started.
Total System Global Area 835104768 bytes
Fixed Size 2257840 bytes
Variable Size 536874064 bytes
Database Buffers 289406976 bytes
Redo Buffers 6565888 bytes
ORA-00205: error in identifying control file, check alert log for more info
-- 有 ORACLE 进程,说明已经启动到 nomount 
[oracle@11g ~]$ ps -ef|grep ora_
oracle 25331 1 0 11:23 ? 00:00:00 ora_pmon_orcl
oracle 25333 1 0 11:23 ? 00:00:00 ora_psp0_orcl
[oracle@11g ~]$ rman target /
说明:控制文件恢复 如果有控制文件自动备份 直接通过 autobackup 恢复,没有的话就通过指定控制文件备份集恢复。
--通过自动备份恢复 
RMAN>restore controlfile from autobackup;
Finished restore at 18-MAR-15
--通过某个备份文件恢复
RMAN> list backup of controlfile;
RMAN> restore controlfile from '/u01/backup/ctl_file_1lo65676_1_1_20130403';
RMAN>alter database mount;
RMAN>recover database;
archived log for thread 1 with sequence 1 is already on disk as file /home/oracle/app/oradata/orcl/redo01.log
archived log file name=/home/oracle/app/oradata/orcl/redo01.log thread=1 sequence=1
media recovery complete, elapsed time: 00:00:01
Finished recover at 19-MAR-15
RMAN>alter database open resetlogs;
Database altered.

 


<think>我们正在处理用户关于Oracle RMAN配置控制文件自动备份的问题。根据提供的引用,特别是引用[3]和引用[4],我们可以总结出配置控制文件自动备份的步骤。 首先,用户需要连接到RMAN(Recovery Manager)工具。然后,执行以下两个主要步骤: 1. 启用控制文件自动备份特性: ``` CONFIGURE CONTROLFILE AUTOBACKUP ON; ``` 2. 配置控制文件自动备份的路径和格式(可选,但推荐): ``` CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '指定的路径和格式'; ``` 例如,引用[3]中的例子是: ``` CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/ORADATA/controlfile/cf_%F'; ``` 其中,`%F`是一个格式说明符,它会被替换为一个包含数据库ID、时间戳等的唯一字符串。 另外,引用[4]提到,配置自动备份后,RMAN可以在没有恢复目录的情况下找到并还原控制文件和服务器参数文件(SPFILE),因为自动备份文件名遵循已知的格式。 因此,完整的配置过程如下: 步骤: 1. 以具有适当权限的用户(如sys用户)登录到数据库服务器,然后启动RMAN: ``` rman target / ``` 2. 在RMAN提示符下,启用控制文件自动备份: ``` RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; ``` 3. (可选)配置自动备份的存储路径和文件名格式: ``` RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/your/backup/path/cf_%F'; ``` 注意:请将`/your/backup/path`替换为实际的备份目录,并确保该目录存在且Oracle软件用户(如oracle)有写权限。 4. 验证配置: ``` RMAN> SHOW CONTROLFILE AUTOBACKUP; ``` 这将显示当前的配置,包括是否启用以及格式设置。 配置完成后,每当RMAN执行备份或数据库结构发生变化(如添加数据文件)时,控制文件都会自动备份。 此外,引用[4]还提到了使用自动备份恢复控制文件的方法,但用户的问题主要是配置备份,所以这里不展开。 注意:引用[5]提到了取消自动备份,但用户的问题是如何配置,所以不需要取消。如果用户需要取消,可以使用`CONFIGURE CONTROLFILE AUTOBACKUP OFF;`。 最后,根据用户的需求,我们生成相关问题: §§相关问题§§ 1. 如何验证RMAN控制文件自动备份是否生效? 2. 控制文件自动备份的命名格式中%F代表什么? 3. 在什么情况下RMAN会自动备份控制文件? 4. 如何从自动备份恢复控制文件?</think>### Oracle RMAN 配置控制文件自动备份的方法 在 Oracle RMAN 中配置控制文件自动备份是确保数据库可恢复性的关键操作。以下是详细步骤: #### **1. 启用控制文件自动备份功能** ```sql RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON; ``` - **作用**:开启自动备份后,每当 RMAN 执行备份操作或数据库结构变更(如添加表空间)时,会自动备份控制文件和 SPFILE[^3][^4]。 - **验证**:使用 `SHOW CONTROLFILE AUTOBACKUP` 检查状态: ```sql RMAN> SHOW CONTROLFILE AUTOBACKUP; ``` #### **2. 配置备份路径和命名格式(可选)** ```sql RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/cf_%F'; ``` - **参数说明**: - `%F`:自动替换为包含数据库 ID 和日期的唯一文件名(格式:`c-IIIIIIIIII-YYYYMMDD-QQ`)[^3][^4]。 - `/backup/`:需替换为实际备份目录(确保 Oracle 用户有写权限)。 - **默认路径**:未配置时,备份保存在 `$ORACLE_HOME/dbs` 目录。 #### **3. 手动触发测试备份** ```sql RMAN> BACKUP CURRENT CONTROLFILE; ``` - 执行后检查目标目录是否生成控制文件备份(如 `/backup/cf_c-1234567890-20231015-00`)[^3]。 #### **4. 恢复场景下的应用** 若控制文件丢失,可通过自动备份恢复: ```sql RMAN> STARTUP NOMOUNT; RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP; RMAN> ALTER DATABASE MOUNT; ``` - **优势**:无需记住备份文件名,RMAN 会自动搜索最新备份[^4]。 #### **关键配置原理** - **必要性**:控制文件记录数据库物理结构,丢失后将无法挂载数据库[^2]。 - **与备份关联**:自动备份在以下场景触发: - `BACKUP` 或 `COPY` 命令执行完成时 - 数据库结构变更(如添加数据文件) - 日志切换(ARCHIVELOG 模式下)[^4]。 > **注意**:若需禁用自动备份,执行 `CONFIGURE CONTROLFILE AUTOBACKUP OFF;`[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值