ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 唯一索引操作可能产生的锁

唯一索引操作可能产生的锁

原创 Linux操作系统 作者:wei-xh 时间:2011-02-25 16:27:15 0 删除 编辑

SESSION 1(SID=3254):

apolloCRMG>create table wxh_tbd(id number);

Table created.
apolloCRMG>create unique index wxh_ind on wxh_tbd(id);

Index created.

apolloCRMG>insert into wxh_tbd values(1);

1 row created.

SESSION 2(SID=1001):

apolloCRMG>insert into wxh_tbd values(1);

被hang住了。

观察等待:

apolloCRMG>select sid,type ,id1,id2 ,lmode,request from v$lock where sid=1001 or block=1;

       SID TYPE        ID1        ID2      LMODE    REQUEST
---------- ---- ---------- ---------- ---------- ----------
      1001 TX       196620     681711          0          4
      1001 TM       139590          0          3          0
      1001 TX       393244     717891          6          0
      3254 TX       196620     681711          6          0

session 2获得X模式的自身的事务锁后,还需要获得session 1的S模式的事务锁(根据ID1,ID2就可以确定获取的是同一个资源),这个时候产生等待。如果session 1回滚,SESSION 2可顺利获得,并且等待里的ID1,ID2也都为自己的事务信息了。

apolloCRMG>rollback;

Rollback complete.

apolloCRMG>select sid,type ,id1,id2 ,lmode,request from v$lock where sid=1001 or block=1;

       SID TYPE        ID1        ID2      LMODE    REQUEST
---------- ---- ---------- ---------- ---------- ----------
      1001 AE           99          0          4          0
      1001 TM       139590          0          3          0
      1001 TX       393244     717891          6          0

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-687943/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE组成员,DBGeeK用户组发起人。曾在DTCC、ORACLE技术嘉年华、Gdevops等公开场合做过数据库技术专题分享,2017年应Oracle邀请在世界最大的数据库会议OOW上做技术分享。组织翻译了《拨云见日,解密Oracle ASM内核》一书。

注册时间:2009-07-04

  • 博文量
    422
  • 访问量
    2315247