oracle資料庫死鎖解決方法

2021-07-02 03:39:47 字數 839 閱讀 8468

在做專案中,在程式完全正確的情況下,出現了當執行sql語句的時候停止工作的現象,開始是懷疑出現了死鎖,當利用sql查詢時發現自己是對的,死鎖通常都是我們應用程式設計不合理造成的,如何處理資料庫中的死鎖呢?

1.先看一下資料庫中那些表被鎖住了。

select b.owner,b.object_name,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id=a.object_id;

2.查詢引起鎖定的回話,得到sid

select b.username,b.sid,b.serial#,logon_time 

from v$locked_object a,v$session b

where a.session_id = b.sid order by b.logon_time;

4. 查出對應的serial#

select sid,serial#,paddr 

from v$session

where sid='剛才查出的sid'

3.殺死對應的死鎖,在命令視窗中執行

alter system kill session'1025,41';其中1025為sid,41為serial#.
總結

接手乙個已經做了一些的專案,裡面難免有許多設計不合理的地方,但是這些不合理的地方往往是能讓自己進步、學習更多的地方。

Oracle資料庫死鎖解決方法

死鎖是資料庫經常發生的問題,資料庫一般不會無緣無故產生死鎖,死鎖通常都是由於我們應用程式的設計本身造成的。產生死鎖時,如何解決呢,下面是常規的解決辦法 1 執行下面sql,先檢視哪些表被鎖住了 select b.owner,b.object name,a.session id,a.locked mo...

oracle資料庫死鎖解決

進入oracle使用者 su oracle 進入dba模式 sqlplus as sysdba 1.查詢被鎖的情況 select object name,machine,s.sid,s.serial from v locked object l,dba objects o v session s w...

資料庫 死鎖產生原因及解決方法

資料庫與作業系統一樣,是乙個多使用者使用的共享資源。當多個使用者併發地訪問資料時,就會產生多個事務同時訪問統一資料的情況。如果對併發操作沒有相應的控制就可能會導致讀取和儲存不正確的資料,破壞了資料庫的一致性。加鎖 讀鎖和寫鎖 是一種控制方法,但當兩個事務要一組有衝突的鎖,而不能將事務繼續下去的話,就...