可以使用CONFIGURE RETENTION POLICY命令来创建一个持续的和自动备份保留策略。
当备份保留策略生效时,RMAN根据CONFIGURE命令指定的标准将数据文件或控制文件的备份视为过期的备份,也就是说,恢复时不再需要的备份。可以使用REPORT OBSOLETE命令来查看过期的文件和DELETE OBSOLETE命令来删除它们。
当随着时间的过去产生备份,旧的备份会变成过期的,因为它们不再需要来满足保留策略。RMAN可以识别过期的文件,但它不会自动删除它们。必须使用DELETE OBSOLETE命令来删除不再需要来满足保留策略的文件。
如果配置了快速恢复区域,那么当需要为新文件准备更多的恢复区域空间时,数据库自动删除过期或已经备份到磁带的文件。磁盘配额规则与保留策略规则不同,但数据库不会违反保留策略删除文件来满足磁盘配额。
REPORT OBSOLETE或DELETE OBSOLETE基于用户定义的保留策略,即它不需要用来恢复来决定备份是过期的。只有当RMAN执行交叉检查和不能找到文件时,备份被视为失效的(expired)备份。简而言之,过期(obsolete)意味着文件不需要,而失效(expired)意味着它不能被找到。
备份保留策略只应用到完全或级别0的数据文件和控制文件备份。对于数据文件拷贝和代理拷贝,如果RMAN决定拷贝或代理拷贝不需要,那么拷贝或代理拷贝可以被删除。对于数据文件的备份集,RMAN不能删除备份集直到备份集中的所有数据文件备份都已过期为止。
保留策略不负责删除或使归档redo日志和级别1的增量备份过期。而是,当没有需要它们的完全备份存在时,这些文件变成过期的。除了影响完全或级别0的数据文件和控制文件备份外,备份保留策略也影响归档redo日志和级别1的增量备份。首先,RMAN决定哪些数据文件和控制文件备份是过期的。然后,RMAN将所有不需要用来恢复必须保留的最旧的数据文件或控制文件备份的归档日志和级别1的增量备份视为过期的。
注:如果备份被非RMAN的技术删除,RMAN不能执行自动保留策略,例如,通过介质管理器的磁带保留策略。介质管理器必须永不失效一个磁带直到磁带上的所有RMAN备份已经从介质管理器的目录(catalog)中删除。
执行保留策略时有两个相互排斥的选项:冗余度和恢复窗口。
1.关于恢复窗口
恢复窗口是以当前时间开始在时间上向后延伸到可恢复点的时间段。可恢复点是假设的时间点恢复(TIPR)的最早的时间,即是在介质故障之后可以恢复的最早时间点。
例如,如果执行恢复窗口为1周,那么RMAN保留完全备份和要求的增量备份和归档日志,这样数据库可以恢复到过去的7天内。执行如下的保留策略:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
这个命令确保对于每个数据文件,比可恢复时间点更旧的一个备份会被保留。例如,如果恢复窗口是7,那么每个数据文件必须总是存在一个备份满足以下条件:
SYSDATE - BACKUP CHECKPOINT TIME >= 7
所有比最近的满足这个条件的备份更旧的备份都是过期的。
假设保留策略如下图所示:
保留策略有以下方面:
1) 恢复窗口是7天。
2) 数据库备份每两周安排一次,在这些日期:1月1日,1月15日,1月29日,2月12日。
3) 数据库运行在ARCHIVELOG模式,如果保留策略需要,归档日志只保存在磁盘上。
如Figure 8-4所示,当前时间是1月23日,可恢复时间点是1月16日。因此,1月15日的备份需要用来恢复,从log序列500到850的归档日志也是如此。在500之前的日志和1月1日的备份是过期的,因为它们不需要用来恢复到窗口期内的时间点。
假设相同的场景持续一周后,如下图所示:
在这个场景中,当前的时间是1月30日,可恢复时间点是1月23日。注意1月15日的备份如何没有过期即使一个更近的备份(1月29日)存在于恢复窗口期内。这个情况发生是因为还原1月29日的备份不能让你恢复到窗口内最早的时间,1月23日。为了确保窗口期内的任何时间点的可恢复性,必须保留1月15日的备份和从序列500到1150的所有归档日志。
2.关于备份冗余度
在某些情况中,使用恢复窗口会复杂化磁盘空间规划,因为必须保留的备份的数量不是恒定的,取决于备份的时间表。相反,基于冗余度的保留策略指定每个数据文件必须保留多少个备份。
例如,可以配置冗余度为2,如下:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
缺省的保留策略配置为REDUNDANCY 1。
3.关于批量删除过期的备份
可以运行REPORT OBSOLETE命令根据保留策略来确定哪些备份当前是过期的。
一个成对的命令,DELETE OBSOLETE删除所有根据保留策略是过期的文件。可以定期运行DELETE OBSOLETE命令来最小化存储过期备份的空间浪费。例如,可以在每周的脚本中运行DELETE OBOSOLETE。
也可以通过在REPORT或DELETE命令中指定REDUNDANCY或RECOVERY WINDOW选项来覆盖配置的保留策略。使用DELETE OBSOLETE和比配置的恢复窗口更短的恢复窗口选项实际上减少了可恢复的窗口。例如,如果配置的窗口是14天,但你执行DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS,那么你不再有能力恢复到7天和14天之前之间的时间点。
4.关于备份保留策略和快速恢复区域删除规则
如果配置了快速恢复区域,那么数据库使用内部的算法来选择快速恢复区域中不再需要的文件来满足配置的保留策略。
当决定哪些文件从快速恢复区域中删除来满足磁盘配额规划时,保留策略决不会被违反。这些状态是OBSOLETE的备份才符合删除的条件来满足磁盘配额规则。
RMAN的状态OBSOLETE总是根据保留策略来决定的。例如,如果数据库备份在RMAN仓库中被视为OBSOLETE,那么它是因为不需要用来恢复到恢复窗口期内的时间点或者它是冗余的。
在快速恢复区域的OBSOLETE状态的规则和磁盘配额符合删除条件的规则之间有着重要的不同。假设归档日志在磁盘上,被当前的恢复窗口所需要,因此不是过期的。如果备份这些日志到磁带,那么保留策略将这些磁盘日志视为需要的,即是没有过期的。然而,快速恢复区域磁盘配额算法将磁盘上的日志视为符合删除的条件,因为它们已经备份到了磁带。磁盘上的日志在RMAN仓库中的状态不是OBSOLETE,但它们符合快速恢复区域的删除条件。
可参考以下章节进一步了解配置备份保留策略的方法:
RMAN配置备份保留策略(RETENTION POLICY)
来源:《Oracle Database Backup and Recovery User’s Guide,19c》