學(xué)習(xí)啦>知識(shí)大全>知識(shí)百科>百科知識(shí)>

oracle中死鎖是什么

時(shí)間: 歐東艷656 分享

  死鎖(Deadlock),這里指的是進(jìn)程死鎖,是個(gè)計(jì)算機(jī)技術(shù)名詞。它是操作系統(tǒng)或軟件運(yùn)行的一種狀態(tài):在多任務(wù)系統(tǒng)下,當(dāng)一個(gè)或多個(gè)進(jìn)程等待系統(tǒng)資源,而資源又被進(jìn)程本身或其它進(jìn)程占用時(shí),就形成了死鎖。由于資源占用是互斥的,當(dāng)某個(gè)進(jìn)程提出申請(qǐng)資源后,使得有關(guān)進(jìn)程在無外力協(xié)助下,永遠(yuǎn)分配不到必需的資源而無法繼續(xù)運(yùn)行,這就產(chǎn)生了一種特殊現(xiàn)象。

  如何解決ORACLE死鎖的問題

  死鎖產(chǎn)生的原因

  兩個(gè)事務(wù)更新同一個(gè)表,并且同時(shí)每個(gè)事務(wù)要更新的數(shù)據(jù)正在被另外一個(gè)事務(wù)所鎖定。因?yàn)閮蓚€(gè)事務(wù)在相互等待資源,兩個(gè)事務(wù)都無法繼續(xù)下去直到ORACLE產(chǎn)生一個(gè)DEADLOCK的錯(cuò)誤。

  ORACLE在檢測到發(fā)生死鎖后,會(huì)自動(dòng)回滾TRANSACTION1中的update emp set sal = sal * 1 where empno = 2000,但是事務(wù)中的第一個(gè)語句不會(huì)回滾,必須用戶自己提交ROLLBACK操作。

  如果在應(yīng)用程序設(shè)計(jì)上可以撲獲DEADLOCK的錯(cuò)誤,然后使用應(yīng)用程序級(jí)別的事務(wù)回滾來解決死鎖。

  解決:

  此錯(cuò)誤主要是由于多個(gè)進(jìn)程訪問同一數(shù)據(jù)庫時(shí),其中每個(gè)進(jìn)程擁有的鎖都是其他進(jìn)程所需的,由此造成每個(gè)進(jìn)程都無法繼續(xù)下去。簡單的說,進(jìn)程A等待進(jìn)程B釋放他的資源,B又等待A釋放他的資源,這樣就互相等待,從而形成的.在發(fā)現(xiàn)該問題出現(xiàn)后,應(yīng)當(dāng)及時(shí)查看數(shù)據(jù)庫是否自動(dòng)把死鎖進(jìn)程中的一個(gè)結(jié)束,若沒有就應(yīng)當(dāng)手動(dòng)的殺掉其中一個(gè)進(jìn)程,以免影響數(shù)據(jù)庫的正常穩(wěn)定運(yùn)行.

oracle中死鎖是什么

死鎖(Deadlock),這里指的是進(jìn)程死鎖,是個(gè)計(jì)算機(jī)技術(shù)名詞。它是操作系統(tǒng)或軟件運(yùn)行的一種狀態(tài):在多任務(wù)系統(tǒng)下,當(dāng)一個(gè)或多個(gè)進(jìn)程等待系統(tǒng)資源,而資源又被進(jìn)程本身或其它進(jìn)程占用時(shí),就形成了死鎖。由于資源占用是互斥的,當(dāng)某個(gè)進(jìn)程
推薦度:
點(diǎn)擊下載文檔文檔為doc格式
246958