必须先确认归档模式和控制文件自动备份,Oracle 11g的RMAN增量备份要求数据库处于ARCHIVELOG模式且CONTROLFILE AUTOBACKUP ON,否则无法正常工作或导致恢复链断裂;同时需启用块变更跟踪(BCT)以避免全量扫描、提升性能,并显式执行LEVEL 0作为增量链基线,区分DIFFERENTIAL与CUMULATIVE LEVEL 1备份类型,配置通道、并行度及保留策略确保备份可用性。

必须先确认归档模式和控制文件自动备份
Oracle 11g 的 RMAN 增量备份无法在非归档模式下正常工作,且没有 CONTROLFILE AUTOBACKUP ON 会导致恢复链断裂。执行前务必检查:
-
SQL> select log_mode from v$database;—— 必须返回ARCHIVELOG -
RMAN> show controlfile autobackup;—— 应为ON,否则立即执行CONFIGURE CONTROLFILE AUTOBACKUP ON; - 若未启用块变更跟踪(BCT),增量备份会扫描全量数据文件,性能极差;建议启用:
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/oradata/orcl/bct.f'
0级备份是所有增量备份的前提
所谓“0级备份”本质是完整数据文件镜像,不是“全备”的代名词,而是增量链的基线。RMAN 不允许直接做 level 1,除非已有有效的 level 0。
- 首次执行:
BACKUP INCREMENTAL LEVEL 0 DATABASE FORMAT '/backup/%U.bkp'; - 该命令会自动包含当前控制文件(因
CONFIGURE CONTROLFILE AUTOBACKUP ON已启用) - 如果误删了之前的 level 0,RMAN 在执行 level 1 时会静默补做一次 level 0,但该隐式备份不计入 retention 策略,容易造成元数据混乱
- 生产环境建议显式标记:
BACKUP INCREMENTAL LEVEL 0 DATABASE TAG 'L0_WEEKLY_20260727';
差异 vs 累计:level 1 备份行为完全不同
默认 BACKUP INCREMENTAL LEVEL 1 是差异备份(differential),而 CUMULATIVE 是累计备份——两者恢复路径、存储占用、备份耗时差异极大,不能混用。
- 差异备份:
BACKUP INCREMENTAL LEVEL 1 DATABASE;—— 只备份自上一个同级或更低级(即最近的 level 0 或 level 1)以来变更的块 - 累计备份:
BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE;—— 备份自上一个 level 0 以来所有变更的块,忽略中间 level 1 - 恢复时,差异链需按时间顺序逐个应用所有 level 1;累计链只需最后一个 level 1 + level 0,但单次备份体积更大
- 二者不可交叉恢复:用差异备份做的 level 1,不能被 cumulative 恢复流程识别
通道配置和 retention 策略直接影响可用性
没配通道或 retention 策略不当,会导致备份成功但 RMAN 找不到有效备份集,或者自动清理掉关键 level 0。
- 磁盘备份至少分配一个通道:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/%U.bkp'; - 并行度设为 2 即可平衡 I/O 和内存开销:
CONFIGURE DEVICE TYPE DISK PARALLELISM 2; - retention 策略必须覆盖最长恢复窗口:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;(若每周做一次 level 0,则至少设为 7 天) - 特别注意:
CONTROL_FILE_RECORD_KEEP_TIME默认仅 7 天,若不用恢复目录(catalog),且 backup 频率低,旧的 level 0 元数据可能被覆盖,导致 RMAN 报错RMAN-06025: no backup of archived log或找不到备份集
ORA-19624)、归档日志路径空间不足导致 BACKUP PLUS ARCHIVELOG 失败,以及在 RAC 环境中未在所有节点启用 BCT。这些不会在配置阶段报错,但会在某次增量备份时突然中断。


















