oracle 死锁

两个会话互相持有对方想要的资源。

下面word就是我测试文档。



img_e25d4fb2f8de1caf41a735ec53088516.png1.doc


查看双方会话所持有的事务

查看死锁的事务

create table S_T

(

  username VARCHAR2(30),

  sid      NUMBER,

  rbs      NUMBER,

  slot     NUMBER,

  seq      NUMBER,

  lmode    NUMBER,

  request  NUMBER,

  times    TIMESTAMP(6) default sysdate

)

insert into s_t

  (USERNAME, SID, RBS, SLOT, SEQ, LMODE, REQUEST)

  select T1.USERNAME,

         T2.SID,

         TRUNC(T2.ID1 / POWER(2, 16)) RBS,

         BITAND(ID1, TO_NUMBER('ffff', 'xxxx')) + 0 slot,

         id2 seq,

         lmode,

         request

    from v$session t1, v$lock t2

   where t2.type = 'TX'

     and t2.sid = t1.sid

     and t1.username = 'SJZYK';

     commit;

每隔一秒钟提交一次


其中在某一秒中出现了四条数据,事务id分别相同,但是知道事务出现变化??这就是死锁的作用。。。。
为什么两个会话持有对方资源,就是死锁,其他的是阻塞???

下面是我的想法以供参考

A      B
T1    T2
T2    T1

commit;要不然先执行A,后执行B,反之AB颠倒。
如果A先提交了,首先执行的B给t2添加排它锁,这么说的话,A的t2就提交不了。同理:B的t1就无法提交。两者之间互相冲突,故引起oracle的死锁。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值