唯一索引操作可能產生的鎖

wei-xh發表於2011-02-25

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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章