客户端程序强行关闭,不一定会把进程kill,特别是大数据量的查询进程,应该是客户端程序编写有问题,查查看是什么SQL搞得

解决方案 »

  1.   

    Conn System/Manager;Select Sid,Serial#,Machine,Program 
      from V$Session;Alter System Kill Session (Sid,Serial#);
      

  2.   

    conn system/manager;--查找oracle锁住的对象
    SELECT   sn.username, m.SID,sn.SERIAL#, m.TYPE,
             DECODE (m.lmode,
                     0, 'None',
                     1, 'Null',
                     2, 'Row Share',
                     3, 'Row Excl.',
                     4, 'Share',
                     5, 'S/Row Excl.',
                     6, 'Exclusive',
                     lmode, LTRIM (TO_CHAR (lmode, '990'))
                    ) lmode,
             DECODE (m.request,
                     0, 'None',
                     1, 'Null',
                     2, 'Row Share',
                     3, 'Row Excl.',
                     4, 'Share',
                     5, 'S/Row Excl.',
                     6, 'Exclusive',
                     request, LTRIM (TO_CHAR (m.request, '990'))
                    ) request,
             m.id1, m.id2
        FROM v$session sn, v$lock m
       WHERE (sn.SID = m.SID AND m.request != 0)         --存在锁请求,即被阻塞
          OR (    sn.SID = m.SID                         --不存在锁请求,但是锁定的对象被其他会话请求锁定
              AND m.request = 0
              AND lmode != 4
              AND (id1, id2) IN (
                            SELECT s.id1, s.id2
                              FROM v$lock s
                             WHERE request != 0 AND s.id1 = m.id1
                                   AND s.id2 = m.id2)
             )
    ORDER BY id1, id2, m.request;
      

  3.   

    ORACLE里锁有以下几种模式:  0:none  
    1:null 空  
    2:Row-S 行共享(RS):共享表锁,sub share  
    3:Row-X 行独占(RX):用于行的修改,sub exclusive  
    4:Share 共享锁(S):阻止其他DML操作,share  
    5:S/Row-X 共享行独占(SRX):阻止其他事务操作,share/sub exclusive  
    6:exclusive 独占(X):独立访问使用,exclusive