oracle外键死锁,Oracle技术之和外键相关的阻塞和死锁问题总结(二)

--=========================

外键引起的死锁:

rollback掉上面session 1和session 2中的sql

--=========================

session 1:

SQL> insert into r values(2);

已创建 1 行。

SQL>

--=======================

session 3:

SQL> select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in

2 (159,128) order by sid;

SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK

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

159 TM 13017 0 2 0 15 0

159 TX 393228 371 6 0 15 0

159 TM 13020 0 3 0 15 0

SQL>

--=======================

session 2:

SQL> insert into r values(2);

已创建 1 行。

SQL>

--=======================

session 3:

SQL> select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in

2 (159,128) order by sid;

SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK

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

128 TM 13017 0 2 0 14 0

128 TX 262168 360 6 0 14 0

128 TM 13020 0 3 0 14 0

159 TX 393228 371 6 0 55 0

159 TM 13020 0 3 0 55 0

159 TM 13017 0 2 0 55 0

已选择6行。

SQL>

--=======================

当我们向子表r中分别通过session 1和2插入数据时,此时发现在r表上家了锁mode是3,在主表

p上加的锁mode是2(RS: row share),此时别没有阻塞,接下来操作主表...

session 1:

SQL> delete from p where id=1;

阻塞...

session 3:

SQL> select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in

2 (159,128) order by sid;

SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK

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

128 TM 13017 0 2 0 332 0

128 TX 262168 360 6 0 332 0

128 TM 13020 0 3 0 332 1

159 TX 393228 371 6 0 373 0

159 TM 13020 0 3 5 373 0

159 TM 13017 0 3 0 29 0

已选择6行。

SQL>

从最后一个字段block=1发现session 1(sid:159)请求的锁mode 5被session 2(sid:128)加在子表(r)

上的3锁阻塞...(上面已经说了mode 3和5不能兼容);

oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值