程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 關於Oracle數據庫的死鎖

關於Oracle數據庫的死鎖

編輯:Oracle數據庫基礎
6.2.6  死鎖
如果你有兩個會話,每個會話都持有另一個會話想要的資源,此時就會出現死鎖(deadlock)。例如,如果我的數據庫中有兩個表A和B,每個表中都只有一行,就可以很容易地展示什麼是死鎖。我要做的只是打開兩個會話(例如,兩個SQL*Plus會話)。在會話A中更新表A,並在會話B中更新表B。現在,如果我想在會話B中更新表A,就會阻塞。會話A已經鎖定了這一行。這不是死鎖;只是阻塞而已。我還沒有遇到過死鎖,因為會話A還有機會提交或回滾,這樣會話B就能繼續。
如果我再回到會話A,試圖更新表B,這就會導致一個死鎖。要在這兩個會話中選擇一個作為“犧牲品”,讓它的語句回滾。例如,會話B中對表A的更新可能回滾,得到以下錯誤:
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved