
Мой Oracle backup отправляет электронное письмо с уведомлением о том, что резервное копирование завершено, и оно было успешным или неудачным в зависимости от того, нашла ли она какую-то закономерность. Наши журналы резервного копирования становятся очень большими - 14 мг. Поскольку этот файл больше 10 МБ, эти сообщения отбрасываются серверами 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
Я вижу 2 варианта:
1 - Вместо того, cat
чтобы ing весь файл журнала в письмо, вы можете включить только новые добавленные строки, используя tail -n x $RMAN_LOG_TSBKUP
вместо , cat $RMAN_LOG_TSBKUP
где x - это количество строк с конца файла, которые нужно включить в письмо. Если вы примерно знаете, сколько строк резервная копия добавит в журнал, то вы можете уточнить x и не включать старые данные журнала. Или вы можете grep
использовать заголовок журнала или дату, это на ваше усмотрение.
2 - Реализуйте управление версиями журналов с помощью logrotate
. Создайте базовый файл конфигурации и добавьте его, /etc/logrotate.d/
и он logrotate
обо всем позаботится за вас. Вы можете настроить ротацию журналов по расписанию или по размеру. logrotate
обычно запускается как ежедневное задание cron из /etc/cron.daily/logrotate
. Это, вероятно, лучший вариант, поскольку он позволит вам сохранять журналы управляемым способом. Базовая конфигурация может включать директивы ниже.
/var/log/oracle-backup.log {
size 1M
rotate 12
monthly
compress
missingok
notifempty
}
Директивы довольно понятны, но man logrotate
содержат полезную информацию, и вот хорошая ссылкаКак управлять файлами журналов с помощью Logrotate в Ubuntu 12.10