oracle lock轉換及oracle deadlock死鎖系列一

wisdomone1發表於2015-10-23

結論

死鎖

1,2個會話相互想獲取對方的資源方可進行繼續下去,就會發生死鎖
2,死鎖發生之前在另一個會話會產生DML HANG,因為不能獲取到鎖資源




會話17


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


       SID
----------
        17


SQL> select * from t_lock;


         A
----------
         3
         1






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


       SID
----------
       162




會話17
SQL> update t_lock set a=33 where a=3;


1 row updated.


會話162
SQL> update t_lock set a=11 where a=1;


1 row updated.




會話17
SQL> update t_lock set a=11 where a=1;
但此會話會HANG住,因為它不能持鎖


會話162


SQL>  update t_lock set a=33 where a=3;
 update t_lock set a=33 where a=3
        *
ERROR at line 1:
ORA-00060: deadlock detected while waiting for resource


再看下鎖模式的轉化

鎖模式的轉換,針對lmode


監控會話
SQL> select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in (17) and type in ('TX','TM');


no rows selected


會話17
SQL> select * from t_lock;


         A
----------
         3


SQL> lock table t_lock in row share mode;


Table(s) Locked.




監控會話
SQL> select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in (17) and type in ('TX','TM');


       SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
        17 TM        74551          0          2          0         20          0


會話17
SQL> insert into t_lock values(1);


1 row created.


監控會話
SQL> select sid,type,id1,id2,lmode,request,ctime,block from v$lock where sid in (17) and type in ('TX','TM');


       SID TYPE        ID1        ID2      LMODE    REQUEST      CTIME      BLOCK
---------- ---- ---------- ---------- ---------- ---------- ---------- ----------
        17 TM        74551          0          3          0         22          0  --由原2級行共享鎖轉換為行排它鎖(DML)
        17 TX     13500430       3776          6          0         22          0  --新增1條排它鎖(事務鎖)

個人簡介:


8年oracle從業經驗,具備豐富的oracle技能,目前在國內北京某專業oracle服務公司從事高階技術顧問。
   
   服務過的客戶:
          中國電信
          中國移動
          中國聯通
          中國電通
          國家電網
          四川達州商業銀行
          湖南老百姓大藥房
          山西省公安廳
          中國郵政
          北京302醫院     
          河北廊坊新奧集團公司
  
 專案經驗:
           中國電信3G專案AAA系統資料庫部署及最佳化
           中國聯通CRM資料庫效能最佳化
           中國移動10086電商平臺資料庫部署及最佳化
           湖南老百姓大藥房ERR資料庫sql最佳化專案
           四川達州商業銀行TCBS核心業務系統資料庫模型設計和RAC部署及最佳化
           四川達州商業銀行TCBS核心業務系統後端批處理儲存過程功能模組編寫及最佳化
           北京高鐵訊號監控系統RAC資料庫部署及最佳化
           河南宇通客車資料庫效能最佳化
           中國電信電商平臺核心採購模組表模型設計及最佳化
           中國郵政儲蓄系統資料庫效能最佳化及sql最佳化
           北京302醫院資料庫遷移實施
           河北廊坊新奧data guard部署及最佳化
           山西公安廳身份證審計資料庫系統故障評估
         
 聯絡方式:
          手機:18201115468
          qq   :   305076427
          qq微博: wisdomone1
          新浪微博:wisdomone9
          qq群:275813900    
          itpub部落格名稱:wisdomone1    http://blog.itpub.net/9240380/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-1815967/,如需轉載,請註明出處,否則將追究法律責任。

相關文章