180509-FileSizeCheck
忘れた頃にやって来る。
1年弱くらいの間隔で来てるっぽいのが、Oracleのリスナー・ログがイッパイになってDBアクセスできなくなるっていうエラー。つい先日も起きちゃった。
勝手にシステム的に切り替えてほしいんだけどね。
ググったけどそんな設定方法は見つからず。
普通、起きないの?ウチのシステムのログがたまりすぎなの?

ちなみ最大サイズは
Oracle 10g:2GB、Oracle 11g:2GB (ADR 有効なら 4GB)
だそうです。

と言う事で次起きる時も絶対忘れてると思うから、
容量を監視して設定値を超えたらリスナー・ログをリネームするツールを作ってみた。
(Windows10、VB2008)

使い方

■ プログラム
FileSizeCheck.exe → プログラム本体
FileSizeCheck.ini → 設定ファイル

■ 設定ファイル
ログに出力するタイトル。
title=DBSERVER1 チェック用

ログファイル名。プログラム本体と同じフォルダに作成される。
logfile=FileSizeCheckListnerLog.log

ファイルをリネームする。1=する、0=サイズチェックのみ。
rename=1

チェックするファイル名(フルパスで設定する)。
checkfile=D:\app\DBUSER\diag\tnslsnr\DBSERVER1\listener\trace\listener.log

ファイルの上限サイズ。この設定値以上になるとファイルをリネームする。
バイトで指定する。下記設定値だと3.8GB。
limitsize=4080218931

■ 起動タイミング
Oracle稼働中だとリスナー・ログを掴んでいるのでエラーになる。
lsnrctl stop で停止。
リスナー・ログをリネーム。
lsnrctl start で起動。
で、行けるみたい。
batファイルに書いて実行させると良いでしょう。

みたいってのはウチは夜間サーバー停止しているのでOracle Stopしたり、DBをExportしたり、の後にこのツールをタスクスケジューラから実行かけてます。

■ 結果ログ
2018/05/08 23:00:02.295 開始 ----------------------------------------------------------------------
2018/05/08 23:00:02.439 ファイルサイズチェック (Ver 1.0) - DBSERVER1 チェック用
2018/05/08 23:00:02.440 D:\app\DBUSER\diag\tnslsnr\DBSERVER1\listener\trace\listener.log
2018/05/08 23:00:02.456 リミットファイルサイズ:    4,080,218,931 byte (   3.80GB)
2018/05/08 23:00:02.461 現在のファイルサイズ  :      849,272,483 byte ( 809.93MB)
2018/05/08 23:00:02.463 リネームしない。
2018/05/08 23:00:02.464 終了

■ リネーム後のファイル名
<ファイル名>_BK<YYMMDDHHMMSS><拡張子>
例:listener_BK180507150121.log
こんな感じでファイル名の後に『_BK』と日時が付きます。