Configure Rman to Purge Application standby logs.
Posted on March 26, 2011 by Gary
Configure RMAN to purge archivelogs after Application on standby.
Applying to EE Version 10.2.0.1 – 11.2.0.1, and 10.2 to 11.2, We need RMAN to automatically purge archivelogs from the FRA once they are applied to the standby database.
With dataguard, and archives in the FRA, they will be purged if they have been applied on the standby and they are no longer required when there is space pressure on the FRA on the primary database.
Here’s the important part, before 11g, if not using archivelog destinations which are mandatory, then the database must be restarted after setting the following parameter:
1) prior to 11g, if not using mandatory archivelog destinations, the database (primary and standby) must be restarted with the following parameter:
SQL> alter system set “_log_deletion_policy”=’ALL’ scope=spfile;
Then we can configure the parameter as normal.
2) configure the following parameter in RMAN on both the primary and standby databases:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;
3) the archivelog must have been applied to the standby
4) the archivelogmust beobsolete per the current RMAN retention policy.
To list the obsolete objects, run the following query:
RMAN> SHOW RETENTION POLICY RMAN> REPORT OBSOLETE;
5) there is space pressure in the FRA
Again, point 5, there has to be space pressure in the FRA before the policy kicks in. Therefore setting any normal local destination to use this will fail. In my experience the rman delete command complained that the logs were still required.
Another interesting note, the database’s have to be backed up for this policy to take place. Only performing backups on the standby will leave the primary in a state where all logs are required (obviously) since condition 4 will not be met, therefore no automatic purging will take place.
eg: the following query will identify all archivelogs applied to the standby:
select a.thread#, a.sequence#, a.applied from v$archived_log a, v$database d where a.activation# = d.activation# and a.applied=’YES’ /