如何使用 restore controlfile from autobackup ?

本文详细介绍了如何使用RMAN的restorecontrolfilefromautobackup命令恢复Oracle数据库的控制文件,包括必要的配置步骤及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境 oracle10104, windows 2000

测试的数据库是由9207升级到10104得来的。

在贴子 http://www.itpub.net/showthread.php?s=&postid=6035979#post6035979

里有网友询问,在该贴子里我为什么不使用

restore controlfile from autobackup;

命令来恢复控制文件?当时我主要是考虑到控制文件的快照在那,能恢复即可。
未考虑到要要用该命令来恢复控制文件。既然他问了,我要尝试一下以该命令来
恢复。我来到另外一台机器上,使用该机器上的RMAN(9205)来做测试,


1、先rman 登录,查看一下当时我本机的rman 配置

RMAN> show all;

RMAN configuration parameters are:
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 'H:rmanbackspctl2894056775_%F
TL';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # 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 SNAPSHOT CONTROLFILE NAME TO 'F:ORACLEDATABASESNCFPSI2.ORA'; # default

2、退出rman, 关闭,startup nomount 数据库。

3、
d:oraclebin>rman target sys/1@zhang nocatalog -- 连接到我机器上。

Recovery Manager: Release 9.2.0.5.0 - Production

Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.

connected to target database: MARKET2 (not mounted) -- 没有mount上机器
using target database controlfile instead of recovery catalog

RMAN> set dbid=2894056775;

executing command: SET DBID

RMAN> restore controlfile from autobackup;

Starting restore at 2006-11-23 18:31:48

allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=161 devtype=DISK
channel ORA_DISK_1: looking for autobackup on day: 20061123
channel ORA_DISK_1: looking for autobackup on day: 20061122
channel ORA_DISK_1: looking for autobackup on day: 20061121
channel ORA_DISK_1: looking for autobackup on day: 20061120
channel ORA_DISK_1: looking for autobackup on day: 20061119
channel ORA_DISK_1: looking for autobackup on day: 20061118
channel ORA_DISK_1: looking for autobackup on day: 20061117
channel ORA_DISK_1: no autobackup in 7 days found
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of restore command at 11/23/2006 18:31:54
RMAN-06172: no autobackup found or specified handle is not a valid copy or piece


到此,发现该命令无论如何也找不到控制文件的备份:H:rmanbackspctl2894056775_C-2894056775-20061123-01.CTL。
很纳闷,于是用rman 的 debug 选项去跟踪,发现跟踪文件里,有许多类似的信息

DBGMISC: Input: argc=3 (krmzgaut)
DBGMISC: Parameters, aut_seq: 250, aut_date: 20061123 (krmzgaut)
DBGMISC: EXITED krmzgaut with status 1 on [11/23/2006 23:28:18]
DBGRPC: krmxrpc: xc=18754888 kpurpc2 rc=0 db=target proc=DBMS_BACKUP_RESTORE.GENPIECENAME
DBGRPC: krmxrpc: xc=18754888 RPC #16 completed immediately
DBGPLSQL: channel ORA_DISK_1: Channel ORA_DISK_1 looking for day: 20061123 sequence 250handle: c-2894056775-20061123-fa (raut_search)
DBGRPC: krmxrpc: xc=18754888 kpurpc2 rc=0 db=target proc=DBMS_BACKUP_RESTORE.VALIDATEBACKUPPIECE
DBGRPC: krmxrpc: xc=18754888 RPC #17 completed immediately
DBGMISC: ENTERED krmzgaut on [11/23/2006 23:28:18]

从上面的信息上看,似乎RMAN正在寻找 c-2894056775-20061123-fa,猛然间醒悟,数据库还未mount, rman 自然无法知道我把控制文件的备份保存在此,它只能按照默认的设置去寻找,此时,当然是在 $ORACLE_HOME/DATABASE 下, 当然,它也不知道我把控制文件的备份名改成了该格式。至此,我把H:rmanbackspctl2894056775_C-2894056775-20061123-01.CTL 改名为c-2894056775-20061123-fa, 并把它保存在 D:oracledatabase 下,再去恢复,此时,

RMAN> restore controlfile from autobackup;

Starting restore at 2006-11-23 23:48:39

using channel ORA_DISK_1
channel ORA_DISK_1: looking for autobackup on day: 20061123
channel ORA_DISK_1: autobackup found: c-2894056775-20061123-e6
channel ORA_DISK_1: controlfile restore from autobackup complete
replicating controlfile
input filename=D:ORACLEORADATAMARKET2CONTROL01.CTL
output filename=D:ORACLEORADATAMARKET2CONTROL02.CTL
output filename=D:ORACLEORADATAMARKET2CONTROL03.CTL
Finished restore at 2006-11-23 23:48:50


说明,要使用restore controlfile from autobackup; 必须
1、CONFIGURE CONTROLFILE AUTOBACKUP ON;
2、CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F';即,保留rman的原始设置,因为在 mount 数据库之前,rman 根本不知道dba 对设置作的任何修改

 

 

 

from:http://zalbb.itpub.net/post/980/232445

<think>嗯,用户这次想要查找的是关于DataGuard备份恢复数据库的具体教程。看来用户正在配置Oracle的高可用环境,需要实际操作指导。从引用内容来看,用户已经对DataGuard的基础架构有一定了解,现在需要的是更落地的备份恢复操作指南。用户引用的材料里提到了物理备库、逻辑备库、快照备库等概念,特别是引用[4]详细说明了ADG的实时查询特性。但用户真正需要的是如何利用这些组件进行备份恢复。这里需要区分几个关键点:1)主库的常规备份方法2)利用备库减轻主库备份压力3)灾难后的恢复流程。考虑到用户可能是DBA,回复应该包含具体操作命令。比如RMAN备份主库时,要说明如何配置备份策略;使用备库备份时,需要强调开启实时应用模式才能保证一致性。对于恢复场景,必须区分完全恢复和部分恢复的不同操作路径。特别要注意引用[1]提到的FlashbackDatabase功能,这在恢复误操作时非常高效,应该作为重点补充。但教程部分要提醒用户:闪回日志需要预先配置,且保留时间窗口有限。用户没有说明具体Oracle版本,但引用中多次提到11g特性,所以回复默认包含ADG相关操作。如果用户实际使用19c等新版本,可能需要额外说明新特性,不过基础操作是通用的。最后生成的问题要覆盖用户可能忽略的要点:比如备份验证方法(容易遗漏)、增量备份技巧(提升效率)、RMAN与DG的协同配置(关键优化点)。特别是要提醒用户测试恢复的重要性——很多DBA只做备份不验证恢复。</think>以下是基于Data Guard的备份恢复数据库操作指南,结合Oracle官方实践和关键注意事项整理: --- ### **一、Data Guard环境备份策略** 1. **主数据库备份** ```sql -- 启用归档模式(必需) ALTER DATABASE ARCHIVELOG; -- RMAN全量备份(主库执行) rman target / RUN { ALLOCATE CHANNEL ch1 DEVICE TYPE DISK; BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG; DELETE NOPROMPT OBSOLETE; RELEASE CHANNEL ch1; } ``` **注意**:备份时需确保`CONTROLFILE AUTOBACKUP ON`(控制文件自动备份)。 2. **备库备份(减轻主库压力)** - **物理备库**:在`MOUNT`状态下直接通过RMAN备份(需开启实时应用)[^4] ```sql -- 备库执行(需开启ADG实时查询) ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT; -- RMAN备份(与主库命令相同) ``` - **优势**:避免主库I/O压力,支持打开状态下备份(ADG特性)[^4] --- ### **二、灾难恢复操作流程 #### **场景1:主库完全故障(使用备库切换)** 1. **故障切换(Failover)** ```sql -- 备库执行 ALTER DATABASE RECOVER MANAGED STANDBY DATABASE FINISH FORCE; ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; ``` 2. **原主库重建** ```sql -- 新主库生成备用控制文件 ALTER DATABASE CREATE STANDBY CONTROLFILE AS '/tmp/standby_ctrl.ctl'; -- 将备份文件/归档日志传输到原主库,执行: rman target / RESTORE CONTROLFILE FROM '/tmp/standby_ctrl.ctl'; ALTER DATABASE MOUNT; RECOVER DATABASE; ALTER DATABASE OPEN RESETLOGS; ``` #### **场景2:数据误删除(Flashback Database)[^1]** ```sql -- 主库执行(需提前启用闪回) ALTER DATABASE FLASHBACK ON; -- 恢复到10分钟前 FLASHBACK DATABASE TO TIMESTAMP (SYSDATE - INTERVAL '10' MINUTE); ALTER DATABASE OPEN RESETLOGS; ``` **优势**:比传统时间点恢复快,无需备份还原[^1]。 --- ### **三、关键注意事项** 1. **备份一致性** - 物理备库备份前确认`Managed Recovery Process (MRP)`应用所有redo[^3] - 使用`ALTER SYSTEM SWITCH LOGFILE`强制归档当前日志 2. **恢复验证** ```sql -- 检查备库与主库差距 SELECT * FROM V$ARCHIVE_GAP; -- 验证备份集 RESTORE DATABASE VALIDATE; ``` 3. **快照备库临时恢复** ```sql -- 转换为可更新状态(测试用) ALTER DATABASE CONVERT TO SNAPSHOT STANDBY; -- 测试后恢复同步 ALTER DATABASE CONVERT TO PHYSICAL STANDBY; ``` 适用于Real Application Testing等场景[^3]。 --- ### **四、官方文档参考** - **核心指南**:[《Oracle Data Guard Concepts and Administration》](https://docs.oracle.com/en/database/oracle/oracle-database/19/sbydb/index.html) - **备份恢复**:[《Oracle Database Backup and Recovery User’s Guide》](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/) [^1] - **ADG特性**:实时查询与恢复并行技术细节[^4] > ⚠️ **重要提示**:生产环境操作前务必在测试环境验证,并确保有完整的归档日志备份。 --- ### 相关问题 1. Data Guard物理备库备份时如何避免主库性能影响? 2. 使用Flashback Database恢复有哪些前提条件和限制? 3. 在Active Data Guard环境下如何实现零停机备份? 4. Data Guard切换后如何快速重建原主库为新的备库? [^1]: Flashback Database功能比传统时间点恢复更快,无需从备份恢复数据 [^3]: 快照备数据库适用于临时可更新场景,如Real Application Testing [^4]: ADG支持在恢复数据的同时以只读方式打开数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值