« Gunzip y el mensaje File too longCentralizando el spfile en un RAC »

Como borrar archives por el lado del servidor de StandBy



Me imagino que debe ser una pregunta muy común... ¿Cómo eliminar los archives que se trasladan hacía mi nodo StandBy?



Este es el esquema

1.- Tengo una instancia primaria que genera archive los cuales son envíados mediante DataGuard a mi instancia StandBy en otro nodo.

2.- Los archives que son generados en la instancia primaria son generados a disco y no están bajo arquitectura ASM ni Flash Recovery Area

3.- Los archives que son copiados en la instancia StandBy caen sólo a una ruta, es una base de datos en FileSystems comunes y no posee Flash Recovery Area

Entonces la pregunta de cajón es ¿Cómo genero algo que me vaya borrando los archives desde la StandBy?

En mi ambiente productivo tengo controlado esto a raíz de los respaldos que se producen mediante RMAN.

Pues he acá algunos códigos que se pueden colocar en práctica


Borrado de archivelogs catalogandolos con RMAN
Esto se debe llevar a cabo en la instancia StandBy (borra_archivelog.sh)

#!/bin/bash
ORACLE_BASE=/export/home/dba/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0; export ORACLE_HOME
ORACLE_SID=LSECORA; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_DATE_FORMAT='dd/mm/yyyy hh24:mi'; export NLS_DATE_FORMAT

echo "Inicio proceso de borrado archivelogs"
rman < connect target
run{
catalog start with '/ruta_donde_quedan_los_archivelogs_en_nodo_standby';
delete noprompt archivelog all completed before 'SYSDATE -1/24';
}
quit;

Como se puede apreciar se catalogan los respaldos y se proceden a eliminar aquellos que se han generado hace más de 1 hora



Borrado de archivelogs mediante shell script
find /ruta_donde_quedan_los_archivelogs_en_nodo_standby/* -type f -mtime +1 -exec rm -rf {} \;

En el fondo se borran los archivelogs que sean mayores a 1 día y a esa búsqueda le aplica la ejecución del comando rm -rf , o sea, los elimina



Borrado de archivelogs mediante configuración de RMAN , siempre y cuando usemos FRA :)
Si se respaldan los archivelogs en la instancia StandBy , situación que es bastante óptima, se puede ejecutar este comando en RMAN

CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON STANDBY;

Incluso si se respaldan en la instancia primaria, se puede ejecutar este comando (también en la primaria)

Con lo cual , cada vez que se respalden los archivelogs y estos hayan sido aplicados, serán eliminados de la faz de la tierra

Actualización :

Para eliminar archives , desde una base de datos Standby 9i :) , he acá la shell

#!/bin/ksh

# Quien
# Hector Ulloa Ligarius

# Cuando
# 03 de Enero del 2012

# Que
# Eliminar archive ya aplicados en la Standby

# Cron
# 00 * * * * /home/oracle/hp/scripts/BorrarArchivelog.sh > /home/oracle/hp/scripts/BorrarArchivelog.log 2>&1

ORACLE_HOME=/home/oracle/app/product/9.2.0
PATH=$PATH:$ORACLE_HOME/bin
ORACLE_SID=XX
export ORACLE_HOME
export ORACLE_SID

rman target / << EOF
delete archivelog until time "sysdate -1/24";
YES
exit
EOF

Con la instrucción "delete archivelog until time" , borramos los archives que tengan más de una hora de antigüedad, se puede usar el noprompt para que no tengamos que colocar el YES , como respuesta al comando delete archivelog :)




by Ligarius
02.04.11. 14:03:43. 286 words, 5741 views. Categories: Base de datos, StandBy - Data Guard ,