データベース - 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
|
|