Oracle RMAN 增量备份策略

Oracle RMAN 增量备份策略

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

RMAN 增量备份减少数据量[1]:

类型

  • Level 0:全备基线
  • Level 1 差异:自上次 0 或 1
  • Level 1 累积:自上次 0

详细见:Oracle RMAN 备份恢复


2. Block Change Tracking

2.1 启用

ALTER DATABASE ENABLE BLOCK CHANGE TRACKING 
  USING FILE '/u01/oradata/bct.f';

2.2 查看

SELECT filename, status, bytes FROM v$block_change_tracking;

2.3 性能

  • 增量备份更快
  • 仅扫描变化块

3. 备份策略

3.1 Level 0

RMAN> BACKUP INCREMENTAL LEVEL 0 DATABASE PLUS ARCHIVELOG;

3.2 Level 1 差异

RMAN> BACKUP INCREMENTAL LEVEL 1 DATABASE;

3.3 Level 1 累积

RMAN> BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;

4. 调度策略

4.1 周策略

# crontab
0 2 * * 0 /u01/scripts/rman_level0.sh   # 周日
0 2 * * 1-6 /u01/scripts/rman_level1.sh # 周一至六

4.2 月策略

1 号:Level 0
2-31 号:Level 1

5. 增量更新备份

5.1 概述

  • 增量合并到全备
  • 避免重复全备
  • 节省空间

5.2 配置

RMAN> BACKUP INCREMENTAL LEVEL 1 
  FOR RECOVER OF COPY WITH TAG 'incr_update' 
  DATABASE;

RMAN> RECOVER COPY OF DATABASE WITH TAG 'incr_update';

6. 压缩

RMAN> CONFIGURE COMPRESSION ALGORITHM 'MEDIUM';

RMAN> BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE;

详细见:Oracle RMAN 压缩与加密


7. 并行

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';

8. 恢复

8.1 完全恢复

RMAN> RESTORE DATABASE;
RMAN> RECOVER DATABASE;
RMAN> ALTER DATABASE OPEN;

8.2 不完全恢复

RMAN> RUN {
  SET UNTIL TIME "TO_DATE('2026-07-21 15:00:00', 'YYYY-MM-DD HH24:MI:SS')";
  RESTORE DATABASE;
  RECOVER DATABASE;
}

SQL> ALTER DATABASE OPEN RESETLOGS;

9. 验证

9.1 备份验证

RMAN> BACKUP VALIDATE DATABASE;
RMAN> RESTORE DATABASE VALIDATE;

9.2 列表

RMAN> LIST BACKUP SUMMARY;
RMAN> LIST BACKUP BY COMPLETION TIME;

10. 维护

10.1 清理

RMAN> CROSSCHECK BACKUP;
RMAN> DELETE EXPIRED BACKUP;
RMAN> DELETE OBSOLETE;

10.2 保留策略

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

11. 监控

11.1 备份历史

SELECT 
  bs_key, 
  bs_type, 
  completion_time, 
  bytes / 1024 / 1024 AS mb
FROM v$backup_set
WHERE completion_time > SYSDATE - 7
ORDER BY completion_time DESC;

11.2 长操作

SELECT 
  sid, 
  opname, 
  sofar, 
  totalwork,
  ROUND(sofar / totalwork * 100, 2) AS pct,
  time_remaining
FROM v$session_longops
WHERE opname LIKE 'RMAN%';

12. 常见坑与排错

12.1 增量慢

-- 1. BCT 启用
-- 2. 减少 Level 0
-- 3. 压缩

12.2 ORA-19809

-- FRA 满
RMAN> DELETE OBSOLETE;
ALTER SYSTEM SET db_recovery_file_dest_size = 1T;

12.3 ORA-19625

-- 文件不存在
RMAN> CROSSCHECK BACKUP;
RMAN> DELETE EXPIRED BACKUP;

13. 最佳实践

  1. BCT 启用:增量快
  2. 周日全备:基线
  3. 平日增量:节省
  4. 压缩:空间
  5. 并行:性能
  6. 保留 7 天:恢复
  7. 验证备份:可靠
  8. 监控进度:及时
  9. 定期演练:可行
  10. 自动化:效率

14. 参考资料

[1] Oracle Database Backup and Recovery User’s Guide 19c https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/