to : fxbsmile(下雨天) 这张表的信息好像太零散吧,我怎么知道是哪张表被锁住的?

解决方案 »

  1.   

    SELECT A.OWNER,   
             A.OBJECT_NAME,   
             B.XIDUSN,   
             B.XIDSLOT,   
             B.XIDSQN,   
             B.SESSION_ID,   
             B.ORACLE_USERNAME,   
             B.OS_USER_NAME,   
             B.PROCESS,   
             B.LOCKED_MODE,   
             C.MACHINE,   
             C.STATUS,   
             C.SERVER,   
             C.SID,   
             C.SERIAL#,   
             C.PROGRAM  
        FROM ALL_OBJECTS A,   
             V$LOCKED_OBJECT B,   
             SYS.GV_$SESSION C 
       WHERE ( A.OBJECT_ID = B.OBJECT_ID ) 
         AND (B.PROCESS = C.PROCESS )
       ORDER BY 1,2     杀掉:alter system kill session 'sid, serial#' 
      

  2.   

    查找用户锁
    select s.username,
    decode(l.type,'TM','TABLE LOCK',
                  'TX','ROW LOCK',
                  NULL) LOCK_LEVEL,
    o.owner,o.object_name,o.object_type,s.terminal,s.machine,s.program,s.osuser
    from v$session s,v$lock l,dba_objects o
    where s.sid=l.sid
    and o.object_id=l.id1
    and s.username is not null
    查找锁等待
    select lpad(' ',decode(l.xidusn,0,3,0))||l.oracle_username User_name,
           o.owner,o.object_name,o.object_type
    from v$locked_object l,dba_objects o
    where l.object_id=o.object_id
    order by o.object_id desc
    找出相应的session
    alter system kill session 'sid, serial#' 
    or
    alter system disconnect session 'sid, serial#' immediate;