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