
私の Oracle バックアップは、バックアップが完了したこと、そしてパターンの検出に応じて成功または失敗したことを通知する電子メールを送信します。バックアップ ログは非常に大きくなっており、14 mg です。このファイルは 10 MB より大きいため、このメッセージは 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つの選択肢があります:
cat
1 -ログ ファイル全体を電子メールに含める代わりに、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 を使用してログ ファイルを管理する方法