元のURLがなくなってしまったので、そのまま貼り付ける。



データベース オラクルでロックしているセッションを確認するSQL文


OS Windows NT 4.0
Oracle Oracle8 server


SELECT V$SESSION.SID
      ,V$SESSION.SERIAL#
      ,SUBSTR(V$SESSION.MACHINE,1,20 )
      ,SUBSTR(V$SESSION.PROGRAM,1,20 )
      ,V$SESSION.USERNAME
      ,V$SESSION.COMMAND
      ,V$SESSION.LOGON_TIME
      ,V$TRANSACTION_ENQUEUE.LMODE
      ,V$TRANSACTION_ENQUEUE.REQUEST
      ,V$TRANSACTION_ENQUEUE.BLOCK
  FROM V$TRANSACTION_ENQUEUE
      ,V$SESSION
 WHERE V$SESSION.SID = V$TRANSACTION_ENQUEUE.SID
V$SESSION  :現行セッションの情報
    項目 COMMAND :実行中のコマンド (リリース8 リファレンス・マニュアル P3-79)
                 2 INSERT        3 SELECT
                 6 UPDATE        7 DELETE
V$TRANSACTION_ENQUEUE :ロックがかかったトランザクションの情報
    項目 LMODE  :セッションがロックを保持している状態 (リリース8 リファレンス・マニュアル P3-112)
         0 なし          1 NULL
         2 行共有        3 行ロック
         4 共有          5 共有/行ロック
         6 表ロック


SELECT V$SESSION.SID
      ,V$SESSION.SERIAL#
      ,SUBSTR(V$SESSION.MACHINE,1,20 )
      ,SUBSTR(V$SESSION.PROGRAM,1,20 )
      ,V$SESSION.USERNAME
      ,V$SESSION.COMMAND
      ,TO_CHAR(V$SESSION.LOGON_TIME,'YYYYMMDD HH24MISS')
      ,V$TRANSACTION_ENQUEUE.LMODE
      ,V$TRANSACTION_ENQUEUE.REQUEST
      ,V$TRANSACTION_ENQUEUE.BLOCK
      ,SUBSTR(V$ACCESS.OBJECT,1,50 )
  FROM V$TRANSACTION_ENQUEUE
      ,V$SESSION
      ,V$ACCESS
 WHERE V$SESSION.SID = V$TRANSACTION_ENQUEUE.SID
   AND V$SESSION.SID = V$ACCESS.SID
   AND V$SESSION.STATUS = 'KILLED'
  AND V$ACCESS.TYPE = 'TABLE'
V$ACCESS    :現在ロックされているDB内のオブジェクト、及びそのオブジェクトにアクセスしている
          セッションを表示します


ここで使用している項目はVIEWの中の一部です。
各VIEWの項目についてはリファレンスを参照してください。



うわ、安い 笑!!