DG主备库RMAN目录不一致会导致备份失败,因启用recovery catalog后其成为元数据唯一权威源;备库未连接同一catalog或未同步元数据(如未执行RESYNC CATALOG),RMAN便查不到备份集记录,直接报RMAN-06023等错误。
为什么DG主备库RMAN目录不一致会直接导致备份失败
rman本身不强制要求使用恢复目录(recovery catalog),但一旦启用,catalog数据库就成为备份元数据的唯一权威来源。在dg环境中,如果主库注册了catalog,而备库未注册、或注册了不同catalog、或注册后未同步元数据,rman在备库执行backup或restore时就会因找不到对应备份集记录而报错,典型如rman-06023: no backup or copy of datafile found to restore或rman-06171: not connected to recovery catalog。
这不是路径映射问题,而是元数据“失联”——RMAN在备库查不到备份集的物理位置、状态、校验和等关键信息,自然无法调度备份操作。
如何确认主备库是否使用同一recovery catalog
分别在主库和备库连接RMAN后执行:
CONNECT CATALOG rman_user/password@catdb SHOW ALL
重点检查两处输出:
-
CONFIGURE CATALOG DATABASE是否指向同一个TNS别名(如catdb) -
LIST INCARNATION OF DATABASE返回的DBID和incarnation#是否完全一致
若备库返回RMAN-06429: CATALOG database is not compatible with this version of RMAN,说明catdb版本低于备库RMAN客户端;若返回空或提示未连接,则根本没连上catalog。
配置统一recovery catalog的实操步骤
必须在主库完成全部注册与同步,再确保备库能复用同一catalog,不能各自独立注册:
- 主库已注册:确认主库RMAN中执行过
REGISTER DATABASE,且LIST BACKUP SUMMARY能查到有效备份 - 备库不重复注册:切勿在备库执行
REGISTER DATABASE,否则会创建新incarnation,导致元数据分裂 - 备库只需连接并同步:在备库RMAN中运行
CONNECT CATALOG rman_user/password@catdb,然后立即执行RESYNC CATALOG - 验证同步结果:在备库执行
LIST BACKUP OF DATABASE COMPLETED AFTER 'sysdate-1',应与主库输出一致
注意:RESYNC CATALOG不是单次操作——它只同步控制文件当前已知的备份信息。若主库刚做完一次BACKUP DATABASE PLUS ARCHIVELOG,需先在主库RESYNC CATALOG,再切到备库执行一次RESYNC CATALOG,才能让备库看到最新备份记录。
常见坑:catalog权限不足或归档日志未应用完
即使catalog地址一致,以下两类问题仍会导致备库RMAN操作失败:
-
rman_user账号在catdb中缺少RECOVERY_CATALOG_OWNER角色,或被显式REVOKE了SELECT权限(如对RC_BACKUP_SET视图) - 备库处于
MANAGED STANDBY RECOVER过程中,但归档日志应用滞后,导致控制文件中记录的备份时间点尚未被应用,RESYNC CATALOG无法获取该时间点后的元数据
验证方法:在备库查SELECT MIN(FIRST_TIME), MAX(NEXT_TIME) FROM V$ARCHIVED_LOG WHERE APPLIED='YES',确保其覆盖主库最近一次备份的COMPLETION TIME;否则先ALTER DATABASE RECOVER MANAGED STANDBY DATABASE USING CURRENT LOGFILE DISCONNECT追平日志。
catalog统一这件事,表面是配个连接串,实质是主备间元数据生命周期的绑定。漏掉RESYNC、误注册、权限断链,任一环节断开,备库RMAN就变成“睁眼瞎”。











