Oracle死鎖監(jiān)控和解決方法

本篇內(nèi)容主要講解“Oracle死鎖監(jiān)控和解決方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Oracle死鎖監(jiān)控和解決方法”吧!

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、綠園ssl等。為數(shù)千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的綠園網(wǎng)站制作公司

 

1、 發(fā)現(xiàn)鎖對象和對應(yīng)的SID

//發(fā)現(xiàn)鎖定

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$SESSION S WHERE l.SESSION_ID=S.SID;

 

2、 解決方法——kill掉指定的session

 

alter system kill session‘sid,serial#’; (其中sid=l.session_id)

 

kill掉session,也可以在EM中進(jìn)行,使用圖形化界面。

 

3、 解決方法——kill掉指定的process

 

通過sid找到對應(yīng)service進(jìn)程的id信息,通過操作系統(tǒng)級別進(jìn)行kill。

 

select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr; 

 其中sid用死鎖的sid替換。

exit

ps -ef|grep spid

 

其中spid是這個(gè)進(jìn)程的進(jìn)程號,kill掉這個(gè)Oracle進(jìn)程。

 

在OS層面kill進(jìn)程的情況很多,比如使用dbms_job調(diào)用的session,大部分時(shí)候都需要在OS層面kill掉。

 

Oracle死鎖與應(yīng)用設(shè)計(jì)

 

一般情況下,應(yīng)用程序?qū)?shù)據(jù)庫的操作基本上是瞬時(shí)的(除非需要Tunning)。只有涉及到批量事務(wù)操作的時(shí)候,才會出現(xiàn)長時(shí)間對一個(gè)對象的獨(dú)占。一旦這種情況出現(xiàn),所獨(dú)占的對象又是為其他會話(批量操作)所請求,就有可能出現(xiàn)死鎖。

 

長時(shí)間的批量事務(wù)一般都組織在系統(tǒng)專門的作業(yè)管理器中,根據(jù)特定的調(diào)度規(guī)則進(jìn)行運(yùn)行。為了提高效率,作業(yè)管理器通常使用多線程技術(shù),同時(shí)多個(gè)線程執(zhí)行多個(gè)任務(wù),這種情況下,出現(xiàn)死鎖的概率也有大大提升。在這個(gè)問題上,筆者有如下想法:

 

1、 按照模塊劃分線程,模塊內(nèi)作業(yè)順序執(zhí)行,模塊間并行。一般來說,一個(gè)模塊的作業(yè)之間,會出現(xiàn)比較嚴(yán)重的資源請求共享,比如對同一個(gè)表中同一批數(shù)據(jù)的操作。這樣很容易出現(xiàn)死鎖狀態(tài)。無論是手工解鎖、還是借助Oracle自身機(jī)制解鎖,都至少引起一個(gè)作業(yè)的回滾。所以,根據(jù)模塊進(jìn)行劃分,相同模塊的作業(yè)盡可能順序執(zhí)行,減少表數(shù)據(jù)之間共用。不同模塊之間的作業(yè),操作更新的表范圍差別比較大,所以不同業(yè)務(wù)模塊之間作業(yè)進(jìn)行并行。

2、 作業(yè)中顯示進(jìn)行錯(cuò)誤00060的處理。在作業(yè)的開發(fā)中,要加入對于00060死鎖錯(cuò)誤的處理,如果接受到了該錯(cuò)誤異常,要主動從應(yīng)用層面進(jìn)行操作回滾,接觸其他作業(yè)阻塞情況。

3、 借助Oracle自身鎖機(jī)制,監(jiān)控長時(shí)間鎖住對象和會話狀況,盡快通知DBA手工解決死鎖。

 

綜上所述:死鎖在Oracle中是一種比較少見的情況,而且自身有相應(yīng)的監(jiān)控防護(hù)機(jī)制。作為應(yīng)用開發(fā)者的我們,也要盡可能的合理化應(yīng)用處理結(jié)構(gòu),盡可能不要顯示的鎖定對象和設(shè)計(jì)不合理的并行操作,加大出現(xiàn)死鎖的概率。

 

到此,相信大家對“Oracle死鎖監(jiān)控和解決方法”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享標(biāo)題:Oracle死鎖監(jiān)控和解決方法
分享網(wǎng)址:http://bm7419.com/article48/igdshp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、軟件開發(fā)、品牌網(wǎng)站建設(shè)關(guān)鍵詞優(yōu)化、做網(wǎng)站、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)