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 このコマンドは非同期であり、即時に有効にならない場合もあります。
できた。