查询一下v$session,v$lock,看看有什么会话在占用相关的资源。

解决方案 »

  1.   


     -- Try this;
     select /*+ NO_MERGE(a) NO_MERGE(b) NO_MERGE(c) */ 'Wait' "Status", a.username, a.machine,
    a.sid, a.serial#, a.last_call_et "Seconds", b.id1, c.sql_text "SQL" 
    from v$session a, v$lock b, v$sqltext c 
    where a.username is not null 
    and a.lockwait = b.kaddr 
    and c.hash_value =a.sql_hash_value 
    union 
    select /*+ NO_MERGE(a) NO_MERGE(b) NO_MERGE(c) */ 'Lock' "Status", a.username, a.machine,
    a.sid, a.serial#, a.last_call_et "Seconds", b.id1, c.sql_text "SQL" 
    from v$session a, v$lock b, v$sqltext c 
    where b.id1 in 
    (select /*+ NO_MERGE(d) NO_MERGE(e) */ distinct e.id1 
    from v$session d, v$lock e 
    where d.lockwait = e.kaddr) 
    and a.username is not null 
    and a.sid = b.sid 
    and b.request=0 
    and c.hash_value =a.sql_hash_value;
      

  2.   

    应该是此表被锁占用,阿经常用的显示持有锁信息的SQL:select nvl(S.USERNAME,'Internal') username, nvl(S.TERMINAL,'None') terminal, L.SID||','||S.SERIAL# Kill, U1.NAME||'.'||trim(T1.NAME) tab,
    decode(L.LMODE, 1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share',
    5,'Share Row Exclusive', 6,'Exclusive',null) lmode,
    decode(L.REQUEST,1,'No Lock', 2,'Row Share', 3,'Row Exclusive', 4,'Share',
    5,'Share Row Exclusive', 6,'Exclusive',null) request
    from V$LOCK L, V$SESSION S, SYS.USER$ U1, SYS.OBJ$ T1
    where L.SID = S.SID and T1.OBJ# = decode(L.ID2,0,L.ID1,L.ID2) and U1.USER# = T1.OWNER# and S.TYPE != 'BACKGROUND'
    order by 1,2,5;