如何根据sid查看改会话具体执行的是什么sql语句

59 篇文章 0 订阅

    前几天研发的一个新功能把数据库拖死了,导致整个系统非常的慢,就连查询数据也非常的慢,后经核实一个更新操作占了30多个锁,无奈只要要把每个更新语句杀掉,但是当时要查看每个sid对应的执行的具体sql是什么,突然间就记不得那个视图了,当时急坏我了,后来用最笨的方法,查看每个与之相关的视图里具体有哪些字段,经过一番折腾终于找到了。

为了避免忘记,记录下以便日后可快捷的查询。

select b.SQL_TEXT,
       a.SID,
       a.SERIAL#,
       'alter system kill session   ' || '''' || a.sid || ',' || a.SERIAL# ||
       ''';'
  from v$session a, v$sqlarea b
 where a.SQL_HASH_VALUE = b.HASH_VALUE
   and a.sid in (select sess.sid
                   from v$locked_object lo, dba_objects ao, v$session sess
                  where ao.object_id = lo.object_id
                    and lo.session_id = sess.SID)

 

下面是杀掉存储过程导致死锁的语句

select b.sid,
       b.SERIAL#,
       a.OBJECT,
       'alter system kill session   ' || '''' || b.sid || ',' || b.SERIAL# ||
       ''';' kill_command
  from SYS.V_$ACCESS a, SYS.V_$session b
 where a.type = 'PROCEDURE'
   and (a.OBJECT like upper('%存储过程名%') or a.OBJECT like lower('%存储过程名%')) ---存储过程名
   and a.sid = b.sid
   and b.status = 'ACTIVE';

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值