sql阻塞 oracle,oracle 查询阻塞的sql语句

博客内容涉及Oracle数据库中并发更新导致的等待问题。Session1执行了未提交的更新操作,Session2和Session3尝试更新同一记录时被阻塞。通过DBA_WAITERS视图分析,发现Session1的SQL语句是造成阻塞的原因。问题在于如何查询到Session1执行的未提交的SQL(更新操作)。解决方案可能涉及到事务管理、锁定机制或死锁检测。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

session1;

create table t_all_objs as select owner,object_id,object_name from all_objects where 0=1;

alter table T_ALL_OBJS add constraint pk_t_all_objs primary key (OBJECT_ID);

insert into t_all_objs(owner,object_id,object_name) values('TEST',2013011701,'test1');

insert into t_all_objs(owner,object_id,object_name) values('TEST',2013011702,'test2');

commit;

update t_all_objs set object_name='test11' where object_id=2013011701;

select sid from v$mystat where rownum=1;--157

session 2

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

SID

----------

273

SQL> update stz.t_all_objs set object_name='test101' where object_id=2013011701;

会一直等待.

session 3

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

SID

----------

419

SQL> update stz.t_all_objs set object_name='test101419' where object_id=2013011701;

也会一直等待。

session4;

SELECT 'blocker('

|| wb.holding_session

|| ':'

|| sb.username

|| ')-sql:'

|| qb.sql_text

blockers,

'waiter ('

|| wb.waiting_session

|| ':'

|| sw.username

|| ')-sql:'

|| qw.sql_text

waiters

FROM dba_waiters wb,

v$session sb,

v$session sw,

v$sqlarea qb,

v$sqlarea qw

WHERE wb.holding_session = sb.sid

AND wb.waiting_session = sw.sid

AND sb.prev_sql_addr = qb.address

AND sw.sql_address = qw.address

AND wb.mode_held <> 'None';

blocker(157:stz)-sql:select sid from v$mystat where rownum=1 waiter (419:SYS)-sql: update stz.t_all_objs set object_name='test101419' where object_id=2013011701

blocker(157:stz)-sql:select sid from v$mystat where rownum=1 waiter (273:SYS)-sql:update stz.t_all_objs set object_name='test101' where object_id=2013011701

现在只能查询到 sid 为157的session的sql 为:执行完update没有提交之后 执行的sql语句select sid from v$mystat where rownum=1。可以通过什么方式查询到 sid为157 执行的 未提叫的sql语句(update t_all_objs set object_name='test11' where object_id=2013011701)呢?

谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值