最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Oracle数据库如何配置RMAN Recovery Catalog
时间:2026-08-25 09:19:48 编辑:袖梨 来源:一聚教程网
必须用独立数据库建catalog,不能和目标库共用;否则控制文件损坏时元数据全失,RMAN退化为nocatalog模式。需用独立服务名(如catdb)连接catalog用户,显式指定自动扩展表空间、临时表空间及无限配额,并仅授予RECOVERY_CATALOG_OWNER角色。
必须用独立数据库建 catalog,不能和目标库共用;否则 RMAN 退化成 nocatalog 模式,元数据一崩全崩。
catalog 数据库必须独立部署
恢复目录不是“在目标库里建个用户”就行的事。RMAN 的 CREATE CATALOG 命令要求 catalog 所在数据库与目标库物理隔离——哪怕只是同一台机器上的另一个实例(比如 catdb),也绝不能指向 ORCL 这类目标库的服务名。
常见错误现象:rman catalog rcowner/pass@ORCL 表面看连上了,实际还是连回目标库;LIST BACKUP 可能返回空或只显示最近几条,REPORT SCHEMA AT TIME 直接报错或无响应。
- 验证是否连对:登录后执行
SHOW ALL,确认CONFIGURE DEFAULT DEVICE TYPE下有catalog字样;更直接的是运行LIST SCHEMA,有输出才说明 catalog 已生效 - tnsnames.ora 中的
catdb条目必须明确指向 recovery catalog 实例的监听地址和端口,不能复用目标库的配置 - 一旦目标库控制文件损坏或误删表空间,共用库里的 catalog 表空间也会不可用,
RECOVERY_CATALOG_OWNER角色再全也没用
创建 catalog 用户必须显式指定表空间和临时表空间
漏掉 QUOTA UNLIMITED ON rmantbs 或没写 TEMPORARY TABLESPACE temp,CREATE CATALOG 会失败,且 Oracle 不报“缺权限”,而是卡在初始化阶段或抛出 ORA-01536: space quota exceeded 这类误导性错误。
- 表空间要启用自动扩展:
CREATE TABLESPACE rmantbs DATAFILE '/u01/oradata/catdb/rmantbs01.dbf' SIZE 50M AUTOEXTEND ON NEXT 10M MAXSIZE UNLIMITED - 用户创建语句必须包含
QUOTA UNLIMITED ON rmantbs,仅授RECOVERY_CATALOG_OWNER角色不够 - 临时表空间必须显式指定:
CREATE USER rcowner IDENTIFIED BY pwd DEFAULT TABLESPACE rmantbs TEMPORARY TABLESPACE temp;不写会导致CREATE CATALOGhang 住
RMAN 连接 catalog 的命令格式不能省略服务名
rman catalog rcowner/pass@catdb 中的 @catdb 是强制项,不是可选后缀。省略它,RMAN 默认连接本地实例(通常是目标库),CREATE CATALOG 就会在错误库里执行。
- 正确写法只有这一种:
rman catalog rcowner/pass@catdb(先连 catalog 库) - 错误写法包括:
rman target / catalog rcowner/pass(缺服务名)、rman catalog rcowner/pass@ORCL(连错库) - 注册目标库时,要用
REGISTER DATABASE,且必须在已连接 catalog 的会话中执行;否则报RMAN-20001: target database not found in recovery catalog
CREATE CATALOG 前只能授予 RECOVERY_CATALOG_OWNER 角色
给 catalog 用户加 DBA、SELECT_CATALOG_ROLE 甚至 CONNECT 和 RESOURCE 都无效。RECOVERY_CATALOG_OWNER 是唯一被 RMAN 识别的角色,它隐含对 RC_* 系列表的完整 DML 权限。
- 执行
GRANT RECOVERY_CATALOG_OWNER TO rcowner后,立刻验证:SELECT * FROM SESSION_ROLES确认该角色已激活 - 如果之前误授过其他角色,建议先
REVOKE干净再重授,避免权限冲突干扰 catalog 初始化 -
CREATE CATALOG成功后,RC_DATABASE、RC_BACKUP_SET等基础表才会被创建;没这个角色,表根本不会出现
最容易被忽略的点是:tnsnames.ora 里 catdb 解析是否真指向独立实例——很多问题表面是权限或语法错,根子在 DNS 或监听配置上跑偏了。连之前,先 tnsping catdb 看通不通,比反复重跑 CREATE CATALOG 更省时间。