
Mi copia de seguridad de Oracle envía un correo electrónico con una notificación de que la copia de seguridad se completó y fue exitosa o falló dependiendo de que encuentre algún patrón. Nuestros registros de respaldo se están volviendo muy grandes: 14 mg. Dado que este archivo pesa más de 10 MB, los servidores de Exchange descartan estos mensajes.
Ayúdenme a solucionar este problema, es decir, necesito que este proceso simplemente envíe un correo electrónico con el patrón de códigos de error "ORA-" o "RMAN-" (si falla) o simplemente un correo electrónico que indique éxito o fracaso.
NOTA: esto es sólo una parte del código. Avíseme si tiene alguna pregunta.
#### Check for RMAN/ORA Errors and notify accordingly
RMANERROR=`egrep "ORA-|RMAN-" $RMAN_LOG_TSBKUP`
RMANWARN=`egrep "ORA-|RMAN-" $RMAN_LOG_TSBKUP|egrep -vE "$EGREP_EXCLUDE"`
if [ -z "$RMANERROR" ]
then
echo "No Errors"
cat $RMAN_LOG_TSBKUP |mailx -s "SUCCESS - DW_TS_BACKUP Complete" `cat $EMAIL_SUCCESS_DIST`
elif [ -z "$RMANWARN" ]
then
echo "No Errors, but Warnings"
cat $RMAN_LOG_TSBKUP |mailx -s "SUCCESS (with ignorable WARNINGS) - DW_TS_BACKUP Complete" `cat $EMAIL_SUCCESS_DIST`
else
echo "Errors Found !!!!"
mailx -s "FAILURE - DW_TS_BACKUP Complete" `cat $EMAIL_FAIL_DIST`
fi
}
Respuesta1
Veo 2 opciones:
1: en lugar de cat
incluir todo el archivo de registro en el correo electrónico, puede incluir solo las líneas recién agregadas usando tail -n x $RMAN_LOG_TSBKUP
en lugar de cat $RMAN_LOG_TSBKUP
donde x es el número de líneas desde el final del archivo para incluir en el correo electrónico. Si sabe aproximadamente cuántas líneas agregará la copia de seguridad al registro, puede refinar x y evitar incluir datos de registro antiguos. O puede hacerlo grep
para obtener un encabezado de registro o una fecha, depende de usted.
2 - Implementar el control de versiones de registros con logrotate
. Cree un archivo de configuración básico, colóquelo /etc/logrotate.d/
y logrotate
se encargará de todo por usted. Puede configurar los registros para que se roten según una programación o por tamaño. logrotate
Normalmente se ejecuta como un cronjob diario desde /etc/cron.daily/logrotate
. Esta es probablemente la mejor opción, ya que le permitirá guardar registros de forma manejable. Una configuración básica podría incluir las siguientes directivas.
/var/log/oracle-backup.log {
size 1M
rotate 12
monthly
compress
missingok
notifempty
}
Las directivas se explican por sí mismas pero man logrotate
tienen buena información y aquí hay un buen enlace.Cómo administrar archivos de registro con Logrotate en Ubuntu 12.10