对于Oracle Data Guard 的Maximum Availability和 Maximum Performance 两种模式下的主库归档文件的删除,必须是在归档文件在备库应用以后才可以删除。
对于Maximum Protection 模式,这种模式的日志是同时写到主库和备库的,所以这种模式下的主库删除归档,没有限制。 可以直接删除。
那么在Maximum Availability和 Maximum Performance下,RMAN 备份归档文件的时候,如果我们加上delete input,那么如何确定归档问及爱你该不该删除。
在10g之前的版本,只能通过操作系统脚本的方式,在删除归档文件之前,首先对Standby端数据库的归档文件应用状态作判断,应用之后才能在Primary端执行正常删除。
在Oracle 10g 后,RMAN提供了配置归档文件删除策略: configure archivelog deletion policy
该策略对应两个值:
APPLIED ON STANDBY :设置为该值时,当通过附加的 DELETE INPUT 子句删除Standby数据库仍需要的日志时,会提示RMAN-08137错误。不过仍然可以手动地通过 DELETE ARCHIVELOG 方式删除。
NONE :设置为该值时,则不启用归档文件的删除策略。默认情况下就是NONE。
我们配置一下:
RMAN> configure archivelog deletion policy to applied on standby;
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters are successfully stored
RMAN-08591: WARNING: invalid archivelog deletion policy
这里有个警告, 解决方法,执行如下命令:
SQL>alter system set "_log_deletion_policy"=ALL scope=spfile sid='*';
设置该参数以后,DB 需要重启。
修改之后,我们在设置:
RMAN> configure archivelog deletion policy to applied on standby;
using target database control file instead of recovery catalog
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters are successfully stored
RMAN> configure archivelog deletion policy to none;
old RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
new RMAN configuration parameters:
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE;
new RMAN configuration parameters are successfully stored
修改之后成功修改RMAN 的归档文件删除策略。