Oracle 查看锁以及解锁


利用jdbc进行数据库操作时,有时可能在执行statement.executeUpdate方法时,程序卡死在那,执行不过去,这可能是因为数据库的锁的问题,可能其他人在进行删改的操作,或者是你自己在利用数据库客户端工具在在操作,这是你可以查看自己的客户端工具之前进行删改操作有没有提交事务commit,因为没有提交事务,可能使程序在执行statement.executeUpdate执行不过去。

查看锁:

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;

解除锁:

Alter system kill session 'SID,SERIAL#' 

相关内容