0

ロックを保持しているプロセスと、どのテーブルで、どのくらいの期間ロックがすでに保持されているかとともに、テーブルに保持されているロックを見つけるにはどうすればよいですか?

4

1 に答える 1

1

このクエリはテストされていませんが、これで望ましい結果が得られると思います。

select session_id "sid",SERIAL#  "Serial",
 substr(object_name,1,20) "Object",
 substr(os_user_name,1,10) "Terminal",
 substr(oracle_username,1,10) "Locker",
 nvl(lockwait,'active') "Wait",
 decode(locked_mode,
        2, 'row share',
        3, 'row exclusive',
        4, 'share',
        5, 'share row exclusive',
        6, 'exclusive',  'unknown') "Lockmode",
 OBJECT_TYPE "Type"
 ,ctime "locked_time"
FROM
 SYS.V_$LOCKED_OBJECT A,
 SYS.ALL_OBJECTS B,
 SYS.V_$SESSION c,
 V$LOCK d
WHERE
 A.OBJECT_ID = B.OBJECT_ID AND
 C.SID = A.SESSION_ID
 AND d.sid =A.session_id
ORDER BY 1 ASC, 5 Desc
/

( locked_mode ) が許可されctimeてからの時間です。current mode以下のリファレンスでこのクエリを見つけました: スクリプト

于 2012-06-16T06:12:55.347 に答える