RMAN-08137: warning: archived log not deleted, needed for standby or upstream capture process


A la hora de revisar porque RMAN no era capaz de eliminar los archive logs dándonos el siguiente error:
RMAN-08137: warning: archived log not deleted, needed for standby or upstream capture process
archived log file name=+RECO/XXXXXX/ARCHIVELOG/2024_07_26/thread_2_seq_31382.5872.1175352221 thread=2 sequence=31382
RMAN-08137: warning: archived log not deleted, needed for standby or upstream capture process
archived log file name=+RECO/XXXXXX/ARCHIVELOG/2024_07_26/thread_2_seq_31383.3853.1175352377 thread=2 sequence=31383
Este error es causado porque en una migración no eliminaron de manera correcta los procesados integrados del extract de un ogg.
SQL> r
1 Select Capture_Name,
2 Capture_Type,
3 Status,
4 To_Char(Required_Checkpoint_Scn, '999999999999999') As Req_Scn,
5 To_Char(Oldest_Scn, '999999999999999') As Oldest_Scn
6* From Dba_Capture
CAPTURE_NAME CAPTURE_TY STATUS REQ_SCN OLDEST_SCN
------------------ ---------- -------- ---------------- ----------------
OGG$CAP_KA2 LOCAL DISABLED 0 0
OGG$CAP_KA2 LOCAL DISABLED 0 0
Para eliminarlo, deberíamos entrar en el ogg y ejecutar la siguiente sentencia para cada proceso que se ha quedado obsoleto UNREGISTER EXTRACT #CAPTURE_NAME# DATABASE.
Una vez lanzada la sentencia anterior, si consultamos de nuevo la consulta debería devolvernos cero filas en caso que lo hayamos realizado bien
SQL> r
1 Select Capture_Name,
2 Capture_Type,
3 Status,
4 To_Char(Required_Checkpoint_Scn, '999999999999999') As Req_Scn,
5 To_Char(Oldest_Scn, '999999999999999') As Oldest_Scn
6* From Dba_Capture
no rows selected
Ejecutamos nuestro pequeño scripts para comprobar que podemos ya eliminar esos archive logs obsoletos
[oracle@_scripts]$ cat rman.sh
#!/bin/bash
. /home/oracle/.bashrc
LOG=$(hostname -s)_`date +%Y%m%d%H%M%S`
touch ${P_RAIZ}/log/${LOG}.log
rman target / log=${P_RAIZ}/log/${LOG}.log << EOF
run
{
DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-1';
}
EOF
[oracle@_scripts]$ . rman.sh
[oracle@_scripts]$
Listo. ¡Espero que os sirva!
Subscribe to my newsletter
Read articles from David Sanz directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

David Sanz
David Sanz
Soy desarrollador, Analista, DBA Oracle y Arquitecto OCI, certificado en OCI Migration and Integration Certified Professional y Certified Architect Associate con más de 15 años de experiencia en plataformas Oracle además de especialista en temas de rendimiento.