データベース - IBM DB2 - トラブルシュート - トランザクションログがいっぱいです

 クラウディア
1. 概要
2. 調査
3. 一時的な対応

1. 概要

 複数のレコードをまとめて「UPDATE」しようとするときなど・・・。

SQL0964C  データベースのトランザクション・ログがいっぱいです。
 というエラーになることがあります。  本ページは、下記のサイトを参考にさせていただきました。
トランザクション・ログがフル (SQL0964C) になったときの対応

2. 調査

 状況を調査するには、データベースサーバで、管理者権限でコマンドプロンプト(端末)を開いて、次の2つのコマンドを実行します。

db2 list applications
 これは、他のページにも書いていますが、データベースに誰がどんなプログラムで接続しているかを表示します。

db2pd -db データベース名 -transactions
 これは、未コミットのトランザクションを表示します。  もし、単にトランザクションをかけたまま放置している状態であれば、その時点で、きっちりコミットかロールバックさせれば、現象は解消して、他に対策を行う必要はありません。

3. 一時的な対応

 結局、トランザクションでとっておく領域が足りないってことですから、対処としては、トランザクションをかける単位を見直すか、ログの領域を増やすしかないわけですが・・・。  とにかくデータベースの更新を行うのを急ぐ場合は、一時的にでもログの領域を増やしましょう。  データベースサーバの管理者でログインして、「DB2」のコマンドプロンプトを管理者権限で開きます。

db2 CONNECT TO データベース名
db2 GET DB CFG FOR データベース名
 で現在の値を確認しておきます。

ログ・ファイルのサイズ (4KB) (LOGFILSIZ) =
 と書いてあるのがログファイルサイズです。  変更するには、下記のコマンドを使用します。

db2 UPDATE DB CFG FOR データベース名 USING LOGFILSIZ サイズ
 変更したら、データベースを再起動します。

db2 DISCONNECT データベース名
db2stop
db2start