Oracle RMAN 备份恢复全集
Oracle RMAN 备份恢复全集
适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07
1. 概述
RMAN 是 Oracle 官方备份恢复工具[1]:
功能:
- 全备/增量
- 压缩/加密
- 验证
- 恢复
- 恢复目录
详细见:Oracle RMAN 备份恢复。
2. 备份类型
2.1 完全备份
RMAN> BACKUP DATABASE;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
2.2 增量备份
-- Level 0
RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE;
-- Level 1 差异
RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;
-- Level 1 累积
RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;
详细见:Oracle RMAN 增量备份策略。
2.3 部分备份
-- 表空间
RMAN> BACKUP TABLESPACE users;
-- 数据文件
RMAN> BACKUP DATAFILE 1, 2;
-- 归档日志
RMAN> BACKUP ARCHIVELOG ALL;
RMAN> BACKUP ARCHIVELOG FROM TIME 'SYSDATE-1';
-- 控制文件
RMAN> BACKUP CURRENT CONTROLFILE;
-- SPFILE
RMAN> BACKUP SPFILE;
3. 镜像副本
RMAN> BACKUP AS COPY DATABASE;
RMAN> BACKUP AS COPY TABLESPACE users;
RMAN> BACKUP AS COPY DATAFILE 1 FORMAT '/u01/backup/system01.bak';
4. 压缩备份
RMAN> CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';
RMAN> BACKUP AS COMPRESSED BACKUPSET DATABASE;
RMAN> BACKUP AS COMPRESSED BACKUPSET TABLESPACE users;
详细见:Oracle RMAN 压缩与加密。
5. 加密备份
5.1 透明加密
RMAN> CONFIGURE ENCRYPTION FOR DATABASE ON;
-- Wallet
RMAN> SET ENCRYPTION ON IDENTIFIED BY ****** ONLY;
5.2 密码加密
RMAN> SET ENCRYPTION ON IDENTIFIED BY ****** ONLY;
RMAN> BACKUP DATABASE;
-- 恢复
RMAN> SET DECRYPTION ON IDENTIFIED BY ******
6. 并行备份
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
RMAN> CONFIGURE CHANNEL 1 DEVICE TYPE DISK FORMAT '/u01/backup/%U';
RMAN> CONFIGURE CHANNEL 2 DEVICE TYPE DISK FORMAT '/u02/backup/%U';
RMAN> CONFIGURE CHANNEL 3 DEVICE TYPE DISK FORMAT '/u03/backup/%U';
RMAN> CONFIGURE CHANNEL 4 DEVICE TYPE DISK FORMAT '/u04/backup/%U';
7. 配置
7.1 保留策略
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
7.2 控制文件自动备份
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/backup/%F';
7.3 优化
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
7.4 默认设备
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO SBT;
8. 完全恢复
8.1 数据库
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;
8.2 表空间
RMAN> SQL 'ALTER TABLESPACE users OFFLINE';
RMAN> RESTORE TABLESPACE users;
RMAN> RECOVER TABLESPACE users;
RMAN> SQL 'ALTER TABLESPACE users ONLINE';
8.3 数据文件
RMAN> SQL 'ALTER DATABASE DATAFILE 5 OFFLINE';
RMAN> RESTORE DATAFILE 5;
RMAN> RECOVER DATAFILE 5;
RMAN> SQL 'ALTER DATABASE DATAFILE 5 ONLINE';
8.4 控制文件
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP NOMOUNT;
RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
RMAN> ALTER DATABASE MOUNT;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN RESETLOGS;
8.5 SPFILE
RMAN> STARTUP NOMOUNT FORCE;
RMAN> RESTORE SPFILE FROM AUTOBACKUP;
RMAN> STARTUP FORCE;
9. 不完全恢复
9.1 基于时间
RMAN> SHUTDOWN IMMEDIATE;
RMAN> STARTUP MOUNT;
RMAN> RUN {
SET UNTIL TIME "TO_DATE('2026-07-21 15:00:00', 'YYYY-MM-DD HH24:MI:SS')";
RESTORE DATABASE;
RECOVER DATABASE;
}
RMAN> ALTER DATABASE OPEN RESETLOGS;
9.2 基于 SCN
RMAN> RUN {
SET UNTIL SCN 1234567;
RESTORE DATABASE;
RECOVER DATABASE;
}
RMAN> ALTER DATABASE OPEN RESETLOGS;
9.3 基于 Sequence
RMAN> RUN {
SET UNTIL SEQUENCE 100 THREAD 1;
RESTORE DATABASE;
RECOVER DATABASE;
}
10. 块恢复
RMAN> RECOVER DATAFILE 5 BLOCK 100, 101;
RMAN> RECOVER CORRUPTION LIST;
11. 表级恢复(12c+)
RMAN> RECOVER TABLE scott.employees
UNTIL TIME "..."
AUXILIARY DESTINATION '/u01/aux'
REMAP TABLE scott.employees:employees_recovered;
12. 验证
12.1 BACKUP VALIDATE
RMAN> BACKUP VALIDATE DATABASE;
RMAN> BACKUP VALIDATE CHECK LOGICAL DATABASE;
RMAN> BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
12.2 RESTORE VALIDATE
RMAN> RESTORE DATABASE VALIDATE;
RMAN> RESTORE ARCHIVELOG ALL VALIDATE;
RMAN> RESTORE CONTROLFILE VALIDATE;
12.3 损坏
SELECT * FROM v$database_block_corruption;
13. 维护
13.1 CROSSCHECK
RMAN> CROSSCHECK BACKUP;
RMAN> CROSSCHECK ARCHIVELOG ALL;
RMAN> CROSSCHECK COPY;
13.2 DELETE
RMAN> DELETE EXPIRED BACKUP;
RMAN> DELETE EXPIRED ARCHIVELOG ALL;
RMAN> DELETE OBSOLETE;
RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7';
13.3 LIST
RMAN> LIST BACKUP SUMMARY;
RMAN> LIST BACKUP BY COMPLETION TIME;
RMAN> LIST ARCHIVELOG ALL;
RMAN> LIST COPY;
RMAN> LIST INCARNATION;
13.4 REPORT
RMAN> REPORT NEED BACKUP;
RMAN> REPORT OBSOLETE;
RMAN> REPORT SCHEMA;
RMAN> REPORT UNRECOVERABLE;
14. 恢复目录
14.1 创建
CREATE TABLESPACE rcat DATAFILE '...' SIZE 100M;
CREATE USER rcat IDENTIFIED BY ****** DEFAULT TABLESPACE rcat;
GRANT CONNECT, RESOURCE, RECOVERY_CATALOG_OWNER TO rcat;
14.2 注册
rman catalog rcat/pwd@rcat
RMAN> CREATE CATALOG;
rman target / catalog rcat/pwd@rcat
RMAN> REGISTER DATABASE;
RMAN> RESYNC CATALOG;
14.3 优势
- 集中管理
- 长期历史
- 脚本存储
- 多库管理
15. 监控
15.1 v$rman_configuration
SELECT name, value FROM v$rman_configuration;
15.2 v$session_longops
SELECT
sid, opname, sofar, totalwork,
ROUND(sofar/totalwork*100, 2) AS pct,
time_remaining
FROM v$session_longops
WHERE opname LIKE 'RMAN%';
15.3 v$backup_set
SELECT
bs_key, bs_type, completion_time,
bytes/1024/1024 AS mb, compressed
FROM v$backup_set
ORDER BY completion_time DESC;
16. 常见坑与排错
16.1 ORA-19809
- FRA 满
- DELETE OBSOLETE
- 增大 FRA
16.2 ORA-19625
- 文件不存在
- CROSSCHECK
- DELETE EXPIRED
16.3 ORA-19870
- 备份损坏
- 验证
- 重新备份
17. 最佳实践
- FRA:自动管理
- 增量 + 压缩:节省
- 并行:性能
- 加密:安全
- 保留策略:自动化
- 控制文件自动备份:保护
- 验证:可靠
- 恢复目录:多库
- 定期演练:可行
- 文档化:流程
18. 参考资料
[1] Oracle Database Backup and Recovery User’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/