备份保留策略指定必须保留哪些备份来满足数据恢复的要求。
策略可以基于恢复窗口或冗余度。使用CONFIGURE RETENTION POLICY命令来指定保留策略。
1.配置基于冗余度的保留策略
命令CONFIGURE RETENTION POLICY的参数REDUNDANCY指定RMAN保存多少份每个数据文件和控制文件的完全或级别0的备份。缺省的保留策略是REDUNDANCY 1。
如果特定的数据文件或控制文件的完全或级别0的备份数量超过设置的REDUNDANCY值,那么RMAN将额外的备份视为过时的。当产生更多备份时,RMAN保持跟踪哪个是保留的,哪个是过时的。RMAN保留所有需要的归档日志和增量备份来恢复没过时的备份。
假设分别在星期一,星期二,星期三和星期四对数据文件7都做了完全备份。现在就有了4份数据文件7的完全备份。如果REDUNDANCY是2,那么星期一和星期二的备份就是过时的。如果在星期五做了另外一个备份,那么数据文件7在星期三做的备份也变为过时的。
假设在另外一种情况中,REDUNDANCY是1。在星期一中午运行级别0的数据库备份,在星期二和星期三中午运行级别1的增量备份,在星期四中午运行级别0的备份。在每天的备份之后立即运行命令DELETE OBSOLETE。星期三的DELETE命令不会移除星期二的级别1,因为这个备份不是冗余的:星期二的级别1的备份可以用来恢复星期一的级别0的备份到星期二中午和星期三中午之间的时间。然而,星期四运行的DELETE命令会移除之前的级别0和级别1的备份。
在RMAN提示符运行CONFIGURE RETENTION POLICY命令,如下所示:
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
2.配置基于恢复窗口的保留策略
命令CONFIGURE的参数RECOVERY WINDOW指定在当前时间和最早的恢复点之间的天数。
RMAN不会将任何在恢复窗口期内的完全备份或级别0的增量备份视为过期的。此外,RMAN保留所有需要的归档日志和级别1的增量备份来恢复在窗口期内的一个随机点。在RMAN提示符下使用CONFIGURE RETENTION POLICY命令来配置基于恢复窗口的保留策略。
以下示例确保可以恢复数据库到上一周的任意点:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN不会自动删除被恢复窗口定义过期的备份,而是在REPORT OBSOLETE输出中显示它们为OBSOLETE和在视图V$BACKUP_FILES中显示它们在the OBSOLETE列中。如果运行DELETE OBSOLETE命令,RMAN删除过期的文件。
3.禁用保留策略
当禁用保留策略时,RMAN不会将任何备份视为过期的。
运行以下命令禁用保留策略:
CONFIGURE RETENTION POLICY TO NONE;
配置保留策略为NONE与清除配置不同。清除将还原为缺省设置REDUNDANCY 1,而NONE是禁用它。
如果禁用了保留策略,运行REPORT OBSOLETE或DELETE OBSOLETE命令而不传输保留策略选项给命令,那么RMAN报错,因为没有保留策略可以用来决定哪些备份是过期的。
注意:如果正在使用快速恢复区域,那么不要禁用保留策略来运行数据库。如果文件从来都不会被视为过期,那么文件只能在被备份到其它磁盘位置或第三方的存储设备比如磁带后才从快速恢复区域中删除。这种行为可能会用完恢复区域中的所有空间,妨碍数据库的正常操作。
来源:《Oracle Database Backup and Recovery User’s Guide,19c》