用v$lock,V$SESSION 关于SID来查询

解决方案 »

  1.   

    oracle不阻止并发读,select的时候不会阻塞其它会话select,亦不会阻塞其它会话insert,delete,update
      

  2.   

    select s.sid,s.machine,o.object_name,l.oracle_username,l.locked_mode,
    'ALTER SYSTEM KILL SESSION '''||s.sid||', '||s.serial#||''';' Command
    from v$locked_object l,v$session s,all_objects o
    where l.session_id=s.sid and l.object_id=o.object_id
      

  3.   

    select * from table_name for update nowait 好象就可以判断这个里的记录是不是被锁定了吧
    如果被锁会抛出一个异常的
    不过如果没有锁定则它自己会锁住这些记录
      

  4.   

    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