DB2でデッドロックを解消する

DB2デッドロックが発生した場合に解消する方法


1. DB2サーバにインスタンスユーザでログインする


2. 以下のコマンドで、DBにログインする

$ db2 connect to


3. 以下のコマンドで、ロック情報を採取し
該当オブジェクトをロックしているアプリケーションハンドルを控えておく

$ db2 "get snapshot for locks on "


4. 以下のコマンドで、DB2へ接続しているアプリケーションとアプリケーションハンドルを表示する

$ db2 list application


5. 3で控えたアプリケーションハンドルを元にオブジェクトをロックしているアプリケーションを特定する


6. 以下のコマンドで、ロックしているアプリケーションをフォースする

$ db2 "force application(アプリケーションハンドル)"


7. 以下のコマンドで、オブジェクトをロックしてたアプリケーションがフォースされたことを確認する

$ db2 list application


「6」の手順で「db2 "force application all"」とすると全てのプロセスを切断しちゃいます。
でもこの方法だと接続している数が多いと、スナップショットの情報量が大量過ぎて
ロックの原因のアプリケーションハンドルを探すのが大変なんだなぁ(; ̄ー ̄A