レコードがロックされている場合、どのレコードがロックされているかを知ることができますか?
レコードのROWIDまたはその他の情報を取得するにはどうすればよいですか?
このSQLでいくつかの情報を得ることができます
SELECT c.ROW_WAIT_OBJ#,c.ROW_WAIT_FILE#,c.ROW_WAIT_BLOCK#,c.ROW_WAIT_ROW#
FROM v$locked_object a, dba_objects b, v$session c
WHERE a.object_id = b.object_id
AND a.SESSION_ID = c.sid(+)
関数を使用してROWIDを取得する方法をWebで見つけました DBMS_ROWID.ROWID_CREATE()
しかし、それは機能していないようです。
2
トランザクションによって保持されているロックではなく、一部のプロセスが待機しているロックのみを表示できます。
—
a_horse_with_no_name 2013年
@a_horse_with_no_name-v $ lockは、トランザクションが保持しているロックを示します
—
Chris Saxon
@ChrisSaxon:その通りです。どの行がロックされているのかはわかりませんが、もっとはっきりしているはずです。
—
a_horse_with_no_name 2013年
Oracle(他のデータベースとは異なり)には、ロックの共有構造がありません。これにより、データベースはスケーラブルになりますが、一方で、すべてのロックを確認することはできません。ロックはデータベースブロックに直接保存されます。誰かがブロックされた瞬間に、「ホルダー・ウェイター」という構造が作成されます。次に、このペアがに表示され
—
ibre5041
V$LOCK
ます。