ORACLE死鎖的解決

2021-09-01 14:33:07 字數 899 閱讀 4141

死鎖是資料庫經常發生的問題,資料庫一般不會無緣無故產生死鎖,死鎖通常都是由於我們應用程式的設計本身造成的。產生死鎖時,如何解決呢,下面是常規的解決辦法:

1)執行下面sql,先檢視哪些表被鎖住了: 

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)查處引起死鎖的會話

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;

這裡會列出sid

3) 查出sid和serial#: 

查v$session檢視: 

select sid,serial#,paddr from v$session where sid='剛才查到的sid'; 

這一步將得到paddr 

4)查v$process檢視: 

select spid from v$process where addr='剛才查到的paddr'; 

這一步得到spid 

5)殺死程序 

(1)在資料庫中,殺掉oracle程序: 

alter system kill session '查出的sid,查出的serial#'; 

(2)如果在oracle中不能殺死程序,我們只能到作業系統中,使用作業系統命令殺死程序 

kill -9  「剛才查出的spid」

在windows平台,可以是偶那個orakill。

解決oracle死鎖

查哪個過程被鎖 查v db object cache檢視 select from v db object cache where owner 過程的所屬使用者 and locks 0 2.查是哪乙個sid,通過sid可知道是哪個session.查v access檢視 select from v ac...

oracle死鎖解決

自己實施測試成功步驟 a.查詢死鎖的使用者相關資訊 select s.username,l.object id,l.session id,s.serial l.oracle username,l.os user name,l.process from v locked object l,v sess...

輕鬆解決Oracle死鎖

各位在使用oracle的過程中,偶爾會遇到死鎖問題,運用下面兩條語句即可輕鬆解決。查詢死鎖情況 select dob.object name table name,vss.sid,vss.serial vss.action action,vss.osuser osuser,vss.process a...