oracle查詢死鎖語句 oracle經(jīng)常死鎖,鎖定數(shù)據(jù)庫的一些表,導(dǎo)致oracle死鎖的原因一般有那些?
oracle經(jīng)常死鎖,鎖定數(shù)據(jù)庫的一些表,導(dǎo)致oracle死鎖的原因一般有那些?一般情況只發(fā)生鎖超時,就是一個進(jìn)程需要訪問數(shù)據(jù)庫表或者字段的時候,另外一個程序正在執(zhí)行帶鎖的訪問(比如修改數(shù)據(jù)),那么這
oracle經(jīng)常死鎖,鎖定數(shù)據(jù)庫的一些表,導(dǎo)致oracle死鎖的原因一般有那些?
一般情況只發(fā)生鎖超時,就是一個進(jìn)程需要訪問數(shù)據(jù)庫表或者字段的時候,另外一個程序正在執(zhí)行帶鎖的訪問(比如修改數(shù)據(jù)),那么這個進(jìn)程就會等待,當(dāng)?shù)攘撕芫面i還沒有解除的話就會鎖超時,報告一個系統(tǒng)錯誤,拒絕執(zhí)行相應(yīng)的SQL操作。發(fā)生死鎖的情況比較少,比如一個進(jìn)程需要訪問兩個資源(數(shù)據(jù)庫表或者字段),當(dāng)獲取一個資源的時候進(jìn)程就對它執(zhí)行鎖定,然后等待下一個資源空閑,這時候如果另外一個進(jìn)程也需要兩個資源,而已經(jīng)獲得并鎖定了第二個資源,那么就會死鎖,因為當(dāng)前進(jìn)程鎖定第一個資源等待第二個資源,而另外一個進(jìn)程鎖定了第二個資源等待第一個資源,兩個進(jìn)程都永遠(yuǎn)得不到滿足。
erp100.com
oracle事務(wù)死鎖,多久自動解鎖?
沒有具體的解鎖時間,oracle可以自動檢測死鎖并解決它們,如果還不行,就只能人為去做了。
應(yīng)用程序什么情況下會造成oracle死鎖,如何?
不同的事務(wù)同一時間操作同一張表的同一條記錄的時候會造成死鎖。
解鎖語句
select object_name 對象名稱,machine as 主機,
s.program 程序,s.sid,s.serial#,p.spid as OS進(jìn)程號
from v$locked_object l,dba_objects o ,v$session s ,v$process p
where l.object_id=o.object_id
and l.session_id=s.sid
and s.paddr=p.addr
ALTER SYSTEM KILL SESSION "1377,4392" --依次填入SID和SERIAL#解鎖
1 使用事務(wù)時,盡量縮短事務(wù)的邏輯處理過程,及早提交或回滾事務(wù); (細(xì)化處理邏輯,執(zhí)行一段邏輯后便回滾或者提交,然后再執(zhí)行其它邏輯,直到事物執(zhí)行完畢提交)
2 設(shè)置死鎖超時參數(shù)為合理范圍,如:3分鐘-10分種;超過時間,自動放棄本次操作,避免進(jìn)程懸掛;