Oracle RMAN Catalog 详解
Oracle RMAN Catalog 详解
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
RMAN Catalog 是集中管理备份元数据的数据库[1]:
详细见:Oracle RMAN 恢复目录、Oracle RMAN 备份恢复全集。
2. 优势
2.1 vs Control File
- 长期保留
- 集中管理
- 脚本存储
- 多库管理
- 报表
2.2 推荐场景
- 多数据库
- 长期保留
- 集中管理
- 异机恢复
3. 创建 Catalog
3.1 表空间
CREATE TABLESPACE rcat_ts
DATAFILE '/u01/oradata/rcat01.dbf' SIZE 1G;
3.2 用户
CREATE USER rcat IDENTIFIED BY ******
DEFAULT TABLESPACE rcat_ts
QUOTA UNLIMITED ON rcat_ts;
GRANT RECOVERY_CATALOG_OWNER TO rcat;
3.3 Catalog
rman catalog rcat/password@rcat
RMAN> CREATE CATALOG;
4. 注册数据库
4.1 注册
rman target / catalog rcat/password@rcat
RMAN> REGISTER DATABASE;
4.2 查看
RMAN> REPORT SCHEMA;
RMAN> LIST INCARNATION;
5. 同步
5.1 自动
- RMAN 操作时自动同步
- Control File → Catalog
5.2 手动
RMAN> RESYNC CATALOG;
RMAN> RESYNC CATALOG FROM DB_UNIQUE_NAME ALL;
6. 脚本
6.1 创建
RMAN> CREATE SCRIPT backup_db {
BACKUP DATABASE PLUS ARCHIVELOG;
DELETE OBSOLETE;
}
RMAN> CREATE GLOBAL SCRIPT backup_all {
BACKUP DATABASE PLUS ARCHIVELOG;
}
6.2 查看
RMAN> PRINT SCRIPT backup_db;
RMAN> LIST SCRIPT NAMES;
RMAN> LIST GLOBAL SCRIPT NAMES;
6.3 执行
RMAN> RUN { EXECUTE SCRIPT backup_db; }
RMAN> RUN { EXECUTE GLOBAL SCRIPT backup_all; }
6.4 修改
RMAN> REPLACE SCRIPT backup_db {
BACKUP DATABASE PLUS ARCHIVELOG DELETE INPUT;
DELETE OBSOLETE;
}
6.5 删除
RMAN> DELETE SCRIPT backup_db;
7. 多数据库
7.1 注册多个
# DB1
rman target sys/pwd@db1 catalog rcat/password@rcat
RMAN> REGISTER DATABASE;
# DB2
rman target sys/pwd@db2 catalog rcat/password@rcat
RMAN> REGISTER DATABASE;
7.2 查询
SELECT db_id, name, db_unique_name FROM rc_database;
8. 视图
8.1 RC_ 视图
SELECT * FROM rc_database;
SELECT * FROM rc_database_incarnation;
SELECT * FROM rc_backup_piece;
SELECT * FROM rc_backup_set;
SELECT * FROM rc_backup_datafile;
SELECT * FROM rc_archived_log;
SELECT * FROM rc_tablespace;
SELECT * FROM rc_datafile;
9. 备份 Catalog
9.1 RMAN
rman target /
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
# Catalog 数据库本身用 control file 管理
9.2 Data Pump
expdp rcat/password DIRECTORY=dp DUMPFILE=rcat.dmp FULL=Y
10. 虚拟专用目录(VPC)
10.1 概念
- 多租户
- 隔离
- 不同 DBA
10.2 配置
-- Base Catalog 用户
CREATE USER vpc_owner IDENTIFIED BY ******
GRANT RECOVERY_CATALOG_OWNER TO vpc_owner;
-- VPC 用户
CREATE USER dba1 IDENTIFIED BY ******
GRANT CREATE SESSION TO dba1;
-- 授权
BEGIN
DBMS_RCVCAT.CREATE_VIRTUAL_CATALOG;
DBMS_RCVCAT.GRANT_DB_ACCESS('dba1', 'DB1');
END;
/
-- DBA1 连接
rman target / catalog dba1/pwd@rcat
RMAN> SET COMMAND ID TO 'DB1';
11. 升级 Catalog
rman catalog rcat/password@rcat
RMAN> UPGRADE CATALOG;
RMAN> UPGRADE CATALOG; -- 确认
12. 删除注册
12.1 注销
RMAN> UNREGISTER DATABASE DB_UNIQUE_NAME 'prod';
12.2 清理
EXEC DBMS_RCVCAT.UNREGISTERDATABASE(db_key, db_id);
13. 异机恢复
13.1 使用 Catalog
rman target / catalog rcat/password@rcat
RMAN> SET DBID 1234567890;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE;
RMAN> ALTER DATABASE MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
13.2 优势
- 无需 DBID(部分情况)
- 集中元数据
- 简化
14. 常见坑与排错
14.1 ORA-19550
- 无法访问 Catalog
- 检查连接
14.2 不同步
- RESYNC CATALOG
14.3 版本
- Catalog 版本 >= 目标
- UPGRADE CATALOG
15. 最佳实践
- 独立数据库:Catalog
- 定期备份:Catalog
- 脚本管理:集中
- 多数据库:统一
- VPC:多租户
- 同步:定期
- 版本:升级
- 监控:状态
- 测试:恢复
- 文档:配置
16. 参考资料
[1] Oracle Database Backup and Recovery User’s Guide 19c, “Recovery Catalog” https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/