必须配置恢复目录,rman无法仅靠控制文件可靠工作;因主备库共享dbid但db_unique_name不同,控制文件只存本地元数据,无法跨库关联备份与路径,不配catalog会导致备库看不到主库备份、还原报ora-19625,且归档删除策略、增量修复等关键功能失效。

必须配置恢复目录(recovery catalog)
在Data Guard中,RMAN无法仅靠控制文件可靠工作——主库和备库共享同一DBID但拥有不同DB_UNIQUE_NAME,控制文件只记录本地元数据,无法跨库关联备份与文件路径。不配恢复目录,LIST BACKUP在备库上可能看不到主库生成的备份,RESTORE DATABASE会报ORA-19625: error identifying file。
创建catalog用户并授予权限后,必须在每个数据库(主+备)都注册进catalog:
RMAN> CONNECT TARGET / CATALOG rman_user/password@catdbRMAN> REGISTER DATABASE;
注册后,RMAN自动用DB_UNIQUE_NAME标记每个备份来源。后续在备库上执行RESTORE TABLESPACE users时,RMAN能从catalog查到该表空间在主库上的备份位置,并自动适配备库的数据文件路径。
DB_UNIQUE_NAME必须显式配置
RMAN默认只认DB_NAME,而Data Guard中主备DB_NAME相同(如都是ORCL),若不配置DB_UNIQUE_NAME,RMAN会把主备当成同一个库,导致备份覆盖、还原错乱。
在catalog连接状态下,为每个库单独配置:
- 主库:
RMAN> CONFIGURE DB_UNIQUE_NAME 'orcl' CONNECT IDENTIFIER 'primary_host'; - 备库:
RMAN> CONFIGURE DB_UNIQUE_NAME 'orcldg' CONNECT IDENTIFIER 'standby_host';
配置后,SHOW ALL输出里会出现对应条目。漏配或拼写错误(比如写成orcl_dg而非实际的orcldg)会导致备份无法被另一端识别,CATALOG START WITH也找不到匹配项。
归档日志删除策略要设为APPLIED ON ALL STANDBY
主库生成归档后,如果RMAN直接DELETE INPUT,而备库还没应用完,MRP进程就会中断并报ORA-01152: file 1 was not restored from a backup。
正确做法是启用基于应用状态的删除策略:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
该策略要求RMAN检查所有已注册的备库(通过catalog中的DB_UNIQUE_NAME列表),确认归档日志在每个备库上都已APPLIED,才允许删除。注意:此策略依赖备库向catalog定期更新状态,需确保备库网络可达且ARCHIVE_LAG_TARGET等参数合理。
增量备份修复备库中断时,SCN取值必须谨慎
当备库因归档丢失中断同步,用增量备份修复时,不能直接用V$DATABASE.CURRENT_SCN——它反映的是控制文件的SCN,而数据文件头的SCN可能更低。用高SCN启动增量备份,会导致部分块未包含,RECOVER DATABASE NOREDO时报ORA-01110: data file或ORA-01157。
务必取两个SCN中的最小值:
-
SELECT CURRENT_SCN FROM V$DATABASE;(控制文件SCN) -
SELECT MIN(CHECKPOINT_CHANGE#) FROM V$DATAFILE_HEADER WHERE FILE# NOT IN (SELECT FILE# FROM V$DATAFILE WHERE ENABLED = 'READ ONLY');(数据文件头最低SCN)
以较低者为FROM SCN参数值,例如BACKUP INCREMENTAL FROM SCN 3162298 DATABASE。这个细节常被跳过,但它是增量修复能否成功的分水岭。











