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