oracle sql 会话锁,如何查看引起锁的会话执行的SQL语句

数据库发生锁等待时,我只能查到 等待锁的会话,所要执行的语句,但无法查看引起锁的会话执行了什么样的语句。

实验如下

(1)以aa用户登录

SQL> select sid from v$mystat where rownum=1;

SID

----------

145

aa用户下有表aa

SQL> select * from aa;

A1 A2

---------- ------------------------------

1 a

2 b

3 c

在这个会话中执行

update  aa set  a1=10 where a1=1;

(2)以另外一个aa重新登录

SQL> select sid from v$mystat where rownum=1;

SID

----------

142

在这个会话中执行  update  aa  set a1=20  where a1=1;

(3)因为都没有提交,所以出现了锁等待,以sys用户登录执行

SQL> select * from dba_waiters;

WAITING_SESSION HOLDING_SESSION    LOCK_TYPE                  MODE_HELD                                MODE_REQUESTED                             LOCK_ID1   LOCK_ID2

--------------- --------------- -------------------------- ---------------------------------------- ---------------------------------------- ---------- ----------

142                              145           Transaction                    Exclusive                                             Exclusive                                    524291        392

可以看出 145 会话阻塞了  142 会话。

select a.waiting_session , b.username ,c.sql_text

from     dba_waiters a , v$session b , v$sqlarea c

where    a.waiting_session=b.sid

and     b.sql_id=c.sql_id;

WAITING_SESSION USERNAME                       SQL_TEXT

--------------- ------------------------------ --------------------------------------------------------------------------------

142 AA                             update aa set a1=20 where a1=1

上面这条语句可以查找出,142 正在等待执行  update  aa  set  a1=20  where a1=1;

select a.holding_session , b.username ,c.sql_text

from     dba_waiters a , v$session b , v$sqlarea c

where    a.holding_session=b.sid

and     b.sql_id=c.sql_id;

select a.holding_session , b.username ,c.sql_text

from     dba_waiters a , v$session b , v$sqlarea c

where    a.holding_session=b.sid

and     b.prev_sql_id=c.sql_id;

但是通过上面两条SQL都查不到 145 会话所执行的引起锁的SQL。

请大家指导一下,怎么查看145 会话所执行的引起锁的SQL

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值