2013年3月12日火曜日

Windows版Oracleアラートログローテーションバッチ

Windows版Oracleアラートログローテーションバッチ。
日次で動かして、アラートログを日付つきでバックアップしていく。
rem Oracle alert log rotation sample for windows batch script
rem アラートログのフルパス
set LOG_FILE=D:\oracle\product\10.2.0\admin\SID\bdump\alert_SID.log

rem バックアップファイル名を決める処理
rem アラートログは1ファイルだが、変数処理のため敢えてfor文を使う。

for /f "usebackq" %%I in ( '%LOG_FILE%' ) do (
  set BACK_FILE=%%~dpnI_%DATE:/=%%%~xI
  set LOG_DIR=%%~dpI
)

rem バックアップ処理

copy %LOG_FILE% %BACK_FILE%

rem アラートログを0リセット

copy NUL %LOG_FILE%

rem 古いファイルを削除

for %%I in ( '%LOG_DIR%' ) do (
  rem ファイルの日付をチェックして、保存期間を過ぎてたら削除
  rem 他の仕組みが楽だったら他の仕組みでやる。

)

ファイル名をきれいにしたいと思う方にどうぞ。
それにしてもやっぱりバッチは可読性が。。

例ではバックアップファイル名に日付文字列を使用したが、
通番方式の方が処理は簡単。
なにせバッチでは日付計算が簡単にはできないし。

あと、forループ使う時はsetの遅延問題にも注意。

0 件のコメント:

コメントを投稿