跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Oracle RMAN如何配置备份集保留策略_使用Retention Policy

RMAN的RETENTION POLICY决定备份是否过时,影响REPORT/DELETE OBSOLETE;三种模式(RECOVERY WINDOW、REDUNDANCY、TO NONE)互斥;需配合ARCHIVELOG模式、控制文件自动备份、FRA空间及归档删除策略协同生效。 rman 的
retention policy
不是“保留多少份备份”的简单计数器,而是决定哪些备份在恢复意义上“已不再需要”——它直接影响
report obsolete
和
delete obsolete
的判断结果,且一旦配错,轻则空间爆满报
ora-19809
,重则误删导致无法恢复。 RETENTION POLICY 三种模式不能共存 Oracle 明确禁止同时启用多种策略。执行任意一种
CONFIGURE RETENTION POLICY TO ...
后,之前配置会立即被覆盖。
RECOVERY WINDOW OF N DAYS
:按“可恢复到最近 N 天内任意时间点”反推所需备份链,包括全备、增量、归档日志。例如设为
7 DAYS
,但上次全备是 8 天前,只要它仍是当前恢复窗口内唯一可用的全备,就不会被标记为过时。
REDUNDANCY N
:对每个数据文件(或控制文件、SPFILE)保留最多 N 个有效备份集。注意:不是“总共 N 个备份”,而是每个文件单独计数;若某文件从未被新备份覆盖,旧备份可能长期不被清理。
TO NONE
:彻底关闭过时判定。RMAN 永远不标记任何备份为 obsolete,
DELETE OBSOLETE
无效。在使用 FRA(闪回恢复区)时极危险——FRA 空间会被撑满,触发
ORA-19809
,数据库可能 hang 住。 配置前必须确认归档模式与控制文件自动备份 保留策略生效的前提是 RMAN 能准确追踪备份元数据。若控制文件损坏或丢失,所有备份可能“不可见”。因此: 数据库必须处于
ARCHIVELOG
模式,否则在线全备失败,
RETENTION POLICY
失去意义; 务必开启
CONTROLFILE AUTOBACKUP ON
,并确认格式有效:
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/cf_%F'
; 若使用 FRA,
DB_RECOVERY_FILE_DEST
必须有足够空间,否则即使策略合理,备份也会因写入失败而中断。 常见误操作与对应修复 很多问题不是策略本身错,而是没配合后续动作或忽略上下文: oracle知识库 oracle知识库下载 下载 改完
RETENTION POLICY
后直接跑
DELETE OBSOLETE
,却没先
REPORT OBSOLETE
看一眼——结果删掉还在恢复链里的备份。正确顺序永远是:
REPORT OBSOLETE
→ 人工核对 →
DELETE OBSOLETE
; 用
REDUNDANCY 2
却长期只做全备,不做增量或归档备份——RMAN 会保留最近两个全备,但归档日志仍按默认策略(
TO NONE
)堆积,最终 FRA 满; 脚本中写死
FORMAT
路径但没加日期变量(如
%T
),导致多次备份覆盖同一文件,
RETENTION POLICY
判定时发现“只有一个备份”,于是把该备份也标为 obsolete —— 实际上是路径冲突造成的假象。 FRA 环境下 RETENTION POLICY 的实际效果差异 是否启用 FRA,会让
RETENTION POLICY
的行为完全不同: 未用 FRA:RMAN 只标记备份为 obsolete,不会自动删除,需手动
DELETE OBSOLETE
; 启用 FRA:RMAN 在备份写入前,会主动清理 FRA 中被标记为 obsolete 的文件以腾出空间。这意味着
RETENTION POLICY
直接影响备份能否成功写入; 关键细节:FRA 中的控制文件自动备份、归档日志、备份集都受同一策略约束。若策略太激进(如
RECOVERY WINDOW OF 1 DAY
),归档日志可能刚生成就被清理,导致无法做时间点恢复。 真正难的不是选
RECOVERY WINDOW
还是
REDUNDANCY
,而是把策略和你的 RPO/RTO、归档日志保留习惯、FRA 容量、以及是否启用
ARCHIVELOG DELETION POLICY
这几件事拧成一股绳。漏掉其中一环,策略就只是纸面配置。

相关文章