全ロックを表示する方法(ロック時間付き)



全ロックを表示する方法を紹介します。(ロックしているもののみ。)
select a.owner || '.' || a.object_name object,
  decode(b.locked_mode,
     1, 'NULL',
     2, '行共有(SS)',
     3, '行排他(SX)',
     4, '共有(S)',
     5, '共有行排他(SRX)',
     6, '排他(X)',
     '???' ) locked_mode,
  to_char(c.ctime / 60,'99990.9') min,
  b.oracle_username, b.os_user_name, b.process
from dba_objects a, v$locked_object b, v$lock c
where a.object_id = b.object_id and
  b.session_id = c.sid and
  b.xidsqn = c.id2 and
  b.xidusn > 0;
以下のような実行結果を得ることができます。

 OBJECT    LOCKED_MODE MIN  ORACLE_USERNAME OS_USER_NAME PROCESS
 --------- ----------- ---- --------------- ------------ -------
 SCOTT.EMP 行排他(SX)  87.8 SCOTT           oracle

上記の例にて、SCOTTユーザにてEMP表が87.8分ロックされていることがわかります。