我的 Oracle 备份会发送一封电子邮件,通知备份已完成,成功或失败取决于它发现的某种模式。我们的备份日志变得非常大 - 14mg。由于该文件大于 10MB,因此 Exchange 服务器将丢弃该邮件。
请帮我解决这个问题,即我需要这个过程来发送一封带有模式“ORA-”或“RMAN-”错误代码(如果失败)的电子邮件,或者只是发送一封指示成功或失败的电子邮件。
注意:这只是代码的一部分 - 如果您有任何疑问,请告诉我。
#### 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
}
答案1
我看到两个选项:
1 - 您可以仅包含新附加的行,而不是cat
将整个日志文件添加到电子邮件中,tail -n x $RMAN_LOG_TSBKUP
而不是使用cat $RMAN_LOG_TSBKUP
其中 x 是从文件末尾开始包含在电子邮件中的行数。如果您大致知道备份将添加到日志中的行数,那么您可以优化 x 并避免包含旧的日志数据。或者您可以grep
使用日志标题或日期,这取决于您。
2 - 使用logrotate
.创建一个基本的配置文件并将其放入/etc/logrotate.d/
,logrotate
它将为您处理一切。您可以将日志配置为根据计划或大小轮换。 logrotate
通常作为每日 cronjob 从 运行/etc/cron.daily/logrotate
。这可能是最好的选择,因为它允许您以可管理的方式保存日志。基本配置可以包含以下指令。
/var/log/oracle-backup.log {
size 1M
rotate 12
monthly
compress
missingok
notifempty
}
这些指令非常不言自明,但man logrotate
有很好的信息,这里有一个很好的链接如何在 Ubuntu 12.10 上使用 Logrotate 管理日志文件