blogこの広告は、90日以上更新していないブログに表示しています。2012-04-10HWエンキューでロックされているセグメントを特定するOracleはじめにOracleまわりのトラブルの調査のため、HWエンキューでロックされたセグメントを特定する方法を調べてみました。R2HWエンキューってなんぞ?Oracleのエンキューとはエンキューは、データベース・リソースへのアクセスをシリアライズする共有メモリーの構造(ロック)です。(Oracleエンキュー名)です。最高水位標)を動かすときに行われるロックです。保持されているロック情報を示すV$LOCKビュー上では、TYPE='HW'のレコードとして表されます。ロックされたHWエンキューが待っているデータのファイルとブロックを特定まず、V$LOCKからTYPEが'HW'の行を探し、そのデータブロックアドレスのファイル番号とブロック番号を取得します。ID2は下記のようになります。HWエンキュー)また、ストアドファンクションDBMS_UTILITY.DATA_BLOCK_ADDRESS_FILEとDBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCKにデータブロックアドレスを渡して実行すると、そのデータブロックアドレスのファイル番号とブロック番号がわかります。NUMBER;そこで、V$LOCKのID2をDATA_BLOCK_ADDRESS_FILEとDATA_BLOCK_ADDRESS_BLOCKに渡せばよさそうです。SQLはこんな感じになります。'HW'結果はこんな感じ。ファイル番号とブロック番号がわかりました。ロックしているセグメントを特定1.でわかったファイル番号とブロック番号から、HWエンキューでロックしているセグメントを特定します。こんな感じのSQLを実行します。1WHEREの条件の値(上記の20と29)には、1.で調べたものを入れてください。いうセグメントがロックされているらしい、ということがわかりました。この情報をもとに原因を特定して、対策を行いましょう。まとめHWエンキューでロックされているセグメントを特定する方法を調べてみました。ツイートはてなブログをはじめよう!ser1zwさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。