查看谁被谁锁住了:
SELECT      s1.username
         || '@'
         || s1.machine
         || ' ( SID='
         || s1.sid
         || ' )  is blocking '
         || s2.username
         || '@'
         || s2.machine
         || ' ( SID='
         || s2.sid
         || ' ) '
            AS blocking_status
  FROM   v$lock l1,
         v$session s1,
         v$lock l2,
         v$session s2
 WHERE       s1.sid = l1.sid
         AND s2.sid = l2.sid
         AND l1.BLOCK = 1
         AND l2.request > 0
         AND l1.id1 = l2.id1
         AND l2.id2 = l2.id2;

查看锁
SELECT                                                           /*+ rule */
        LPAD (' ', DECODE (l.xidusn, 0, 3, 0))
           || l.oracle_username
              User_name,
           o.owner,
           o.object_name,
           o.object_type,
           s.sid,
           s.serial#
    FROM   v$locked_object l, dba_objects o, v$session s
   WHERE   l.object_id = o.object_id AND l.session_id = s.sid
ORDER BY   o.object_id, xidusn DESC

查看数据库引起锁表的SQL语句:  

  SELECT A.USERNAME,

         A.MACHINE,

         A.PROGRAM,

         A.SID,

         A.SERIAL#,

         A.STATUS,

         C.PIECE,

         C.SQL_TEXT

    FROM V$SESSION A,

         V$SQLTEXT C

   WHERE     A.SID IN (SELECT DISTINCT T2.SID

                         FROM V$LOCKED_OBJECT T1,

                              V$SESSION T2

                        WHERE T1.SESSION_ID = T2.SID)

         AND A.SQL_ADDRESS = C.ADDRESS(+)

ORDER BY C.PIECE;

 SELECT l.session_id || ',' || s.serial# sessionId,o.owner || '.' || o.object_name objName,l.os_user_name dbUser,l.oracle_username osUser,s.program,s.machine  FROM v$locked_object l, all_objects o, v$session s WHERE l.object_id = o.object_id AND s.sid = l.session_id 

--查询APP是否锁表语句
SELECT l.session_id || ',' || s.serial# sessionId,o.owner || '.' || o.object_name objName,l.os_user_name dbUser,l.oracle_username osUser,s.program,s.machine  FROM v$locked_object l, all_objects o, v$session s WHERE l.object_id = o.object_id AND s.sid = l.session_id AND s.program not like '%JDBC%';

kill连接的方式,使用上面查询的SESSIONID,通过下面的类似语句    
--ALTER   SYSTEM   KILL   SESSION '3470,58846';

=================================================
SELECT                                                           /*+ rule */
        LPAD (' ', DECODE (l.xidusn, 0, 3, 0))
           || l.oracle_username
              User_name,
           o.owner,
           o.object_name,
           o.object_type, 
           s.sid,
           s.serial#
    FROM   v$locked_object l, dba_objects o, v$session s
   WHERE   l.object_id = o.object_id AND l.session_id = s.sid 
   /*and o.object_name='TACCOINFO'*/
ORDER BY   o.object_id, xidusn DESC

SELECT P.SPID,

       A.SERIAL#,

       C.OBJECT_NAME,

       B.SESSION_ID,

       B.ORACLE_USERNAME,

       B.OS_USER_NAME

  FROM V$PROCESS P,

       V$SESSION A,

       V$LOCKED_OBJECT B,

       ALL_OBJECTS C

 WHERE     P.ADDR = A.PADDR

       AND A.PROCESS = B.PROCESS

       AND C.OBJECT_ID = B.OBJECT_ID;

select l.session_id sid, 
       s.serial#, 
       l.locked_mode, 
       l.oracle_username, 
       s.user#, 
       l.os_user_name, 
       s.machine, 
       s.terminal, 
       a.sql_text, 
       a.action 
  from v$sqlarea a, v$session s, v$locked_object l 
where l.session_id = s.sid 
   and s.prev_sql_addr = a.address 
order by sid, s.serial#;

SELECT      s1.username
         || '@'
         || s1.machine
         || ' ( SID='
         || s1.sid
         || ' )  is blocking '
         || s2.username
         || '@'
         || s2.machine
         || ' ( SID='
         || s2.sid
         || ' ) '
            AS blocking_status
  FROM   v$lock l1,
         v$session s1,
         v$lock l2,
         v$session s2
 WHERE       s1.sid = l1.sid
 
 
         AND s2.sid = l2.sid
         AND l1.BLOCK = 1
         AND l2.request > 0
         AND l1.id1 = l2.id1
         AND l2.id2 = l2.id2;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值