ユーザ用ツール

サイト用ツール


ibm:db2:case_recover_lock

ロック待ちの状態の解消方法

一つ上へ

他のアプリが止まっても構わない場合、全てのクライアント接続を切断する。

$ db2 "force applications all"

ロックを掴んでいるクライアント接続のみ切断する場合は、 まずロック状況を調査する。

$ db2pd -db <db_name> -locks

以下の項目について確認する。

  1. 項目
  2. 内容
  3. TranHId
  4. トランザクションID
  5. Mode
  6. ロックモード。X:排他、U:更新、S:共有
  7. 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