背景
DB2でバッチを実行したところ、
SQL0964C データベースのトランザクション・ログがいっぱいです。 SQLSTATE=57011
のエラーが発生、現地で即座に対応する必要があったためために、ログ領域の拡張方法を調査、実施しました。
ログ領域の拡張方法
現在のログ領域の情報をみるために以下のコマンドを実行
db2 get db cfg for [DB名]
ログ・ファイルのサイズ
1 次ログ・ファイルの数
2 次ログ・ファイル数
の部分にログファイルの情報が記載されています。
各パラメータを変更するためのコマンドは以下になります。
db2 update db cfg for [DB名] using LOGFILSIZ [新しい値]
db2 update db cfg for [DB名] using LOGPRIMARY [新しい値]
db2 update db cfg for [DB名] using LOGSECOND [新しい値] IMMEDIATE
私が現象を解消した際は
ログ・ファイルのサイズ
2 次ログ・ファイル数
を変更しました。
1年に一回しか実行しないバッチなので、1次ログファイルは拡張せずに2次ログファイルを拡張。
万が一失敗した際にリトライする時間もなかったのでログファイルのサイズも念のため拡張。
実環境では以下のコマンドを実行し解消することを確認しています。
db2 update db cfg for [DB名] using LOGFILSIZ 20000
db2 update db cfg for [DB名] using LOGSECOND 50 IMMEDIATE
db2stop force
db2start
その他
元のPGの作りみてトランザクションの、ここ最近担当者の退職に伴い引き継いだ10年前に作成されたシステム
なので解析に時間がかかりそう
参考URL
トランザクション・ログがフル (SQL0964C) になったときの対応 (IM-10-00W)
ログ・ファイルのサイズ構成パラメーター
1 次ログ・ファイル数構成パラメーター
2 次ログ・ファイル数構成パラメーター