恢复目录必须部署在独立Oracle实例上,不可与目标库共用;否则控制文件损坏时元数据全失,RMAN退化为nocatalog模式。需用独立服务名(如catdb)连接catalog用户,显式指定自动扩展表空间、临时表空间及无限配额,并仅授予RECOVERY_CATALOG_OWNER角色,注册前须验证连接成功。

恢复目录必须用独立实例,不能和目标库共用
直接在目标库(比如 ORCL)里建 rcowner 用户并执行 CREATE CATALOG,等于把备份元数据和生产库绑死。一旦控制文件损坏、实例崩溃或误删表空间,recovery_catalog 表空间跟着不可用,LIST BACKUP、REPORT SCHEMA AT TIME 全部失效——RMAN 退化成 NOCATALOG 模式,只能查最近有限记录。
真正起作用的 catalog,必须部署在另一个 Oracle 实例上(哪怕只是单机小库),服务名不能指向目标库。验证方法:RMAN 登录后执行 SHOW ALL,看 CONFIGURE DEFAULT DEVICE TYPE 下是否显示已连接 catalog;更直接的是运行 LIST SCHEMA,有输出说明连对了。
常见错误包括:
- rman catalog rcowner/pass@ORCL → 连回目标库,catalog 创建失败
- rman target / catalog rcowner/pass → 缺少服务名,RMAN 默认连本地,大概率连错
- tnsnames.ora 中 catdb 条目指向了目标库监听端口,网络层就错了
创建 catalog 用户前必须显式指定表空间和临时表空间
漏掉任何一项,CREATE CATALOG 会失败,且错误提示不直观。典型报错:ORA-01536: space quota exceeded for tablespace 'RMANTBS',或卡在权限校验阶段。
关键操作要点:
- 表空间要启用自动扩展:
CREATE TABLESPACE rmantbs DATAFILE '/u01/oradata/catdb/rmantbs01.dbf' SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED - 用户创建必须带
QUOTA UNLIMITED ON rmantbs,否则即使授了RECOVERY_CATALOG_OWNER也写不进 catalog 表 - 临时表空间必须显式指定:
TEMPORARY TABLESPACE temp;不写的话,用户可能因无CREATE TEMPORARY TABLE权限,在CREATE CATALOG步骤 hang 住
RMAN 连接 catalog 的命令必须带正确服务名
rman catalog rcowner/pass@catdb 这个 @catdb 是关键。它必须解析到 recovery catalog 所在数据库的服务名,而不是目标库的。
验证 tnsnames.ora 配置是否生效:
- 在 catalog 库所在主机上执行:
tnsping catdb,确认能通 - 用 SQL*Plus 测试连接:
sqlplus rcowner/pass@catdb,确保能登录 - RMAN 启动后立即执行:
CONNECT CATALOG rcowner/pass@catdb(注意不是CONNECT TARGET)
执行 CREATE CATALOG 前,确保该用户只被授予 RECOVERY_CATALOG_OWNER 角色——授 DBA 或 SELECT_CATALOG_ROLE 是无效的,RMAN 只认这个角色所含的对 RC_* 系列表的 INSERT/UPDATE/DELETE 权限。
REGISTER DATABASE 必须在 catalog 连接成功后执行
只有 catalog 创建完成、且 RMAN 已通过 @catdb 连上它,才能注册目标库。否则会报 RMAN-06004: ORACLE error from recovery catalog database 或静默失败。
标准流程是:
- 先启动 RMAN 并连接 catalog:
rman catalog rcowner/pass@catdb - 在 RMAN 提示符下执行:
CREATE CATALOG(首次执行) - 再连接目标库:
CONNECT TARGET /(或CONNECT TARGET sys/pwd@orcl) - 最后注册:
REGISTER DATABASE
如果目标库是归档模式但未开启 FORCE LOGGING,REGISTER DATABASE 会成功但后续某些恢复操作受限;建议提前执行:ALTER DATABASE FORCE LOGGING;
注册后立刻验证:LIST INCARNATION OF DATABASE; 应返回至少一条记录;REPORT SCHEMA; 应列出目标库所有表空间和数据文件——这才是 catalog 真正开始工作了。


















