本篇內(nèi)容主要講解“Oracle死鎖監(jiān)控和解決方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Oracle死鎖監(jiān)控和解決方法”吧! 本篇內(nèi)容主要講解“Oracle死鎖監(jiān)控和解決方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Oracle死鎖監(jiān)控和解決方法”吧! 創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、泰寧網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為泰寧等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。 1、 發(fā)現(xiàn)鎖對(duì)象和對(duì)應(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找到對(duì)應(yīng)service進(jìn)程的id信息,通過操作系統(tǒng)級(jí)別進(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)程號(hào),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í)候,才會(huì)出現(xiàn)長時(shí)間對(duì)一個(gè)對(duì)象的獨(dú)占。一旦這種情況出現(xiàn),所獨(dú)占的對(duì)象又是為其他會(huì)話(批量操作)所請(qǐng)求,就有可能出現(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è)之間,會(huì)出現(xiàn)比較嚴(yán)重的資源請(qǐng)求共享,比如對(duì)同一個(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ā)中,要加入對(duì)于00060 死鎖錯(cuò)誤的處理,如果接受到了該錯(cuò)誤異常,要主動(dòng)從應(yīng)用層面進(jìn)行操作回滾,接觸其他作業(yè)阻塞情況。3、 借助Oracle自身鎖機(jī)制,監(jiān)控長時(shí)間鎖住對(duì)象和會(huì)話狀況,盡快通知DBA 手工解決死鎖。 綜上所述:死鎖在Oracle 中是一種比較少見的情況,而且自身有相應(yīng)的監(jiān)控防護(hù)機(jī)制。作為應(yīng)用開發(fā)者的我們,也要盡可能的合理化應(yīng)用處理結(jié)構(gòu),盡可能不要顯示的鎖定對(duì)象和設(shè)計(jì)不合理的并行操作,加大出現(xiàn)死鎖的概率。
分享文章:Oracle死鎖監(jiān)控和解決方法
URL標(biāo)題:http://m.newbst.com/article32/cegsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、全網(wǎng)營銷推廣、域名注冊(cè)、搜索引擎優(yōu)化、標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)