DB2 でテーブルロックさせているアプリを探して終了させる

DB2を使っていて、調子の悪いテーブルにクエリ投げたら返事帰ってこなくなってテーブルロックしたままになっちゃったときの解除方法。

get snapshot for locks でロック状態にあるものの一覧を出してくれる。だいたいどのへんかなーというのをあたりをつけておく。

 

db2 "get snapshot for locks on DBNAME"

 

list application で接続しているアプリケーション一覧を出してくれる。

 

db2 "list application"

 

アプリケーションハンドルが表示される。じゃあこの中で、今回たまたま調子が悪かった CSE.EXE についてみてみよう。

 

db2 "list application" | grep CSE.exe 
DBNAME CSE.exe 906 192.168.0.10.48905.1401101234 DBNAME 1

 

これだ。じゃああとはこれを強制終了させればいい。ハンドルを指定して終了。今回の例では 906 ですな。

 

db2 "force application(906)"
DB20000I FORCE APPLICATION コマンドが正常に完了しました。
DB21024I このコマンドは非同期であり、即時に有効にならない場合もあります。

 

できた。