ibm:db2:case_recover_lock
ロック待ちの状態の解消方法
他のアプリが止まっても構わない場合、全てのクライアント接続を切断する。
$ db2 "force applications all"
ロックを掴んでいるクライアント接続のみ切断する場合は、 まずロック状況を調査する。
$ db2pd -db <db_name> -locks
以下の項目について確認する。
- 項目
- 内容
- TranHId
- トランザクションID
- Mode
- ロックモード。X:排他、U:更新、S:共有
- Sts。ステータス(G:保有している、W:待機している)。ステータスが「G」となっているトランザクションIDを記録しておく。
次に、ロックしているアプリケーションを調べる
$ db2pd -db <db_name> -transactions
ロックを保持しているトランザクションIDに対するアプリケーションID「AppHandl」の項目を調べ、記録する。
アプリケーションからの接続を強制的に切断する
$ db2 "force applications (AppHandl No.) <?code> さらに、そのアプリケーションが発行しているSQLを調べるには、-applicationsオプションと-dnyオプションをつける。 <code> $ db2pd -db <db_name> -applications -dny
AppHandlとL-AnchIDを比較し、Dynamic SQL StatementsのAnchIDを確認することで、どのアプリケーションIDがどのSQL文を発行しているか確認できる。
ibm/db2/case_recover_lock.txt · 最終更新: 2023/03/20 11:13 by mikoto