本篇內(nèi)容主要講解“oracle怎么快速清理kill會話”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“oracle怎么快速清理kill會話”吧!
成都創(chuàng)新互聯(lián)主營烏海網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,烏海h5微信小程序開發(fā)搭建,烏海網(wǎng)站營銷推廣歡迎烏海等地區(qū)企業(yè)咨詢
今天開發(fā)反饋說,執(zhí)行某個程序update的時候hang住,查看了一下是個小表,只有3000多行數(shù)據(jù)。第一反應(yīng)是有鎖,把該實例的所有session kill后,執(zhí)行update還是hang住,單獨執(zhí)行了下where條件后面的select很快。于是覺得應(yīng)該是在2節(jié)點上還有l(wèi)ock,于是執(zhí)行查詢:
select * from gv$lock where id1=383105;
SQL> select * from gv$lock where id1=383105;
INST_ID ADDR KADDR SID TYPE ID1 ID2 LMODE REQUEST CTIME BLOCK
-------------- -------- ---------- --------- -------- --------- --------- ---------- -------------- ---------- ----------
2 0000000110AF61B0 0000000110AF6210 1333 TM 383105 0 3 0 6819 2
果然,2節(jié)點上還有一個session持有鎖。
連接到2節(jié)點,執(zhí)行查詢:
SQL> select sid,serial#,osuser from v$session where sid=1333;
SID SERIAL# OSUSER
--------- -------------- ------------------------------
1333 22559 6005821
alter system kill session '1333,22559';
殺了會話后,再查詢,發(fā)現(xiàn)1333的session還存在:
SQL> select sid,serial#,osuser from v$session where sid=1333;
SID SERIAL# OSUSER
--------- -------------- ------------------------------
1333 22559 6005821
于是想從系統(tǒng)層kill,可是通過以下sql查詢不到1333的spid
select p.pid,p.spid,s.sid,s.serial# from v$process p,v$session s where s.paddr=p.addr and s.sid=1333;
查詢后發(fā)現(xiàn),當(dāng)在Oracle中kill session以后, Oracle只是簡單的把相關(guān)session的paddr 指向同一個虛擬地址.此時v$process和v$session失去關(guān)聯(lián),進程就此中斷。 然后Oracle就等待PMON去清除這些Session.所以通常等待一個被標記為Killed的Session退出需要花費很長的時間. 如果此時被Kill的process,重新嘗試執(zhí)行任務(wù),那么馬上會收到進程中斷的提示,process退出,此時Oracle會立即啟動PMON 來清除該session.這被作為一次異常中斷處理.
根據(jù)以下sql找到之前的paddr:
select p.addr from v$process p where pid <> 1
minus
select s.paddr from v$session s;
07000107C8C050F8
07000107DCC19D88
根據(jù)v$process的addr找到spid:
select * from v$process where addr in ('07000107C8C050F8','07000107DCC19D88');
然后找到系統(tǒng)進程號,殺掉就好了。由于部分過程沒有保留下執(zhí)行結(jié)果,就只有記錄下sql了。
oracle@cq2:] ps -ef|grep 8847870
oracle 8847870 1 3 Aug 06 - 734:23 ora_pz99_CQRPT2
oracle 10420652 13107576 0 11:11:01 pts/1 0:00 grep 8847870
[oracle@cq2:] ps -ef|grep 14221746
oracle 12583324 13107576 0 11:11:22 pts/1 0:00 grep 14221746
oracle 14221746 1 0 08:16:07 - 0:04 oracleCQRPT2 (LOCAL=NO)
[oracle@cq2:] kill -9 14221746
[oracle@cq2:] ps -ef|grep 14221746
oracle 12583046 13107576 0 11:12:11 pts/1 0:00 grep 14221746
到此,相信大家對“oracle怎么快速清理kill會話”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)頁名稱:oracle怎么快速清理kill會話
標題URL:http://chinadenli.net/article34/gidepe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、商城網(wǎng)站、服務(wù)器托管、關(guān)鍵詞優(yōu)化、靜態(tài)網(wǎng)站、網(wǎng)頁設(shè)計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)