Política de Borrado de Archivelogs en RMAN Oracle 19c

Consejo Breve

Cuando tienes una base de datos en Modo Archive o un ambiente DataGuard debes poner antención en los archive logs manteniendo espacio suficiente en la Fast Recovery Area para que la base siga funcionando, pero al mismo tiempo dejar suficientes archive logs disponibles en caso de un escenario de recuperación de la base de datos.

Entonces se necesita configurar una Política de Borrado y calendarizar una depuración manual de los archive logs.

De acuerdo a la documentación de RMAN si los archive logs están en una fast recovery area, entonces son borrados automáticamente cuando se requiera espacio libre en el disco (~70%).
Sin embargo puedes tener problemas si se recibe una carga inesperada que pueda llenar la FRA haciendo que la base falle con un ORA-00257: Archiver error, por lo que se recomienda un borrado manual periódico.

Política de Borrado con Sólo Modo Archive

Si tienes una base de datos aislada pero está en modo archive necesitas:

  1. Configurar RMAN con la siguiente política:
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DEVICE TYPE DISK;

Borrar hasta que se haya respaldado tantas veces.

  1. Ejecutar el borrado de los archivelogs al momento del respaldo (en este caso archivelogs con más de 7 días de antigüedad) incluyendo el comando delete archivelog en tu script de respaldo de RMAN:
delete nopromt archivelog until time 'sysdate-7';

Siguiendo esta política recibirás un error si alguno de los archivelogs no ha sido respaldado al menos dos veces, incluso si tiene varios días de antigüedad:

RMAN-08138: warning: archived log not deleted - must create more backups
archived log file name=/oradata/recovery/PATODB/archivelog/2020_07_20/o1_mf_1_8_hlvgk4xo.arc thread=1 sequence=8
Política de Borrado para DataGuard

Si tienes un ambiente DataGuard entonces necesitas tener cuidado antes de remover los archivelogs ya que estos son necesarios para la recuperación de la Standby. Entonces necesitas:

  1. Configurar RMAN con alguna de las siguientes opciones:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;

Borrar cuando se haya aplicado en las Standby.

CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;

Borrar cuando se haya recibido en las Standby aunque no se haya aplicado.

  1. Ejecutar el borrado de los archivelogs al momento del respaldo (en esta caso archivelogs con más de 7 días de antigüedad y que ya han sido respaldados dos veces) incluyendo el comando delete archivelog en tu script de respaldo de RMAN:
delete noprompt archivelog until time 'sysdate-7' BACKED UP 2 TIMES TO DEVICE TYPE DISK;

Siguiendo esta política recibirás un error si alguno de los archivelogs no ha sido aún aplicado en todas las bases de datos Standby incluso si tiene varios días de antigüedad y ya han sido respaldados:

RMAN-08120: warning: archived log not deleted, not yet applied by standby
archived log file name=/oradata/recovery/PRMYDB/archivelog/...

o un error si no ha sido enviado hacia todas las bases de datos Standby:

RMAN-08137: warning: archived log not deleted, needed for standby or upstream capture process
archived log file name=/oradata/recovery/PRMYDB/archivelog/...