SELECT s.USERNAME,S.SID SESSION_ID,S.USERNAME,LMODE,REQUEST,O.OWNER||'.'||O.OBJECT_NAME||' ('||O.OBJECT_TYPE||')',S.TYPE LOCK_TYPE,L.ID1 LOCK_ID1,L.ID2 LOCK_ID2
 FROM V$LOCK L,SYS.DBA_OBJECTS O,V$SESSION S 
 WHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID;

解决方案 »

  1.   

    可以通过alter system kill session ‘sid,serial#’来杀掉会话 SELECT /*+ rule */ s.username,  decode(l.type,'TM','TABLE LOCK',                'TX','ROW LOCK',                NULL) LOCK_LEVEL,  o.owner,o.object_name,o.object_type,  s.sid,s.serial#,s.terminal,s.machine,s.program,s.osuser  FROM v$session s,v$lock l,dba_objects o  WHERE l.sid = s.sid  AND l.id1 = o.object_id(+)  AND s.username is NOT NULL
      

  2.   

    简单:
    1)session 1 执行下面的命令:
    lock table table1 in exclusive mode; 
    如果table1 被其他的session 上了排他缩,这个session就会挂起
    2)session 2 中执行下面的sql,可以找到上索的session
    select * from v$lock a where a.block<0;
      

  3.   

    不好意思,上面的贴子有点笔误,更正一下:
    简单:
    1)session 1 执行下面的命令:
    lock table table1 in exclusive mode; 
    如果table1 被其他的session 上了排他锁,这个session就会挂起
    2)session 2 中执行下面的sql,可以找到上锁的session
    select * from v$lock a where a.block>0;
      

  4.   

    知道 session id 后,可以通过 v$session 表查到该session 发起的机器名,ip查不到,只能查机器名