數(shù)據(jù)庫(kù)異常hang住解決
下午內(nèi)網(wǎng)測(cè)試庫(kù)同事反應(yīng)查詢更新數(shù)據(jù)很慢,有時(shí)甚至表都打不開(kāi),后來(lái)通過(guò)服務(wù)器【linux】的top命令查看了下,cpu和mem占用正常,但wait高達(dá)80%多(下面兩圖顯示的就是問(wèn)題前后觀察EM對(duì)比的截圖,版本是oracle10gR2,EM的效果比oracle11gR2遜色不少哈):
-------------------------------------->>
---------------------------->>
接著通過(guò)sqldevelpdev客戶端查詢有沒(méi)有鎖等待之類會(huì)話事件,果然有,而且是兩個(gè)session持有TX鎖,然后通過(guò)下面的sql查詢從oracle和linux級(jí)別kill掉了相應(yīng)session,以為風(fēng)波就此平靜,結(jié)果過(guò)了不到一分鐘查詢又出現(xiàn),只不過(guò)這次只有一個(gè)session持有TX鎖,于是就去查找對(duì)應(yīng)的sql_txt,找到后發(fā)現(xiàn)是個(gè)同事寫(xiě)的存儲(chǔ)過(guò)程,定時(shí)任務(wù),當(dāng)時(shí)正在運(yùn)行,讓其確認(rèn)下是不是任務(wù)執(zhí)行出問(wèn)題了,結(jié)果一查,是程序問(wèn)題,造成的死循環(huán),它會(huì)批量發(fā)起會(huì)話,kill一個(gè)后接著又鎖,循環(huán)反復(fù),后來(lái)他改了下程序后重新運(yùn)行,一切恢復(fù)通暢.
--查詢死鎖 select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object lo, dba_objects ao,v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid; --oracle級(jí)別kill session alter system kill session '1627,1'; alter system kill session '1564,64740'; --查詢當(dāng)前連接會(huì)話 select s.value,s.sid,a.username,a.MACHINE from v$sesstat S,v$statname N,v$session A where n.statistic#=s.statistic# and name='session pga memory' and s.sid=a.sid and a.sid=1626 order by s.value; --查詢?cè)斐伤梨i的sql語(yǔ)句 SELECT a.SID, a.username, s.sql_text FROM v$session a, v$sqltext s WHERE a.sql_address = s.address AND a.sql_hash_value = s.hash_value and a.SID=1626 ORDER BY a.username, a.SID, s.piece; --造成鎖等待的操作內(nèi)容 begin flt_com.p_line_relation_change(:A0,:B0,:C0,:D0,:E0,:ret_errorcode,:ret_errorname); end; --通過(guò)sid查找pid,進(jìn)而通過(guò)系統(tǒng)級(jí)別kill select spid, osuser, s.program from v$session s,v$process p where s.paddr=p.addr and s.sid=1605; --服務(wù)器級(jí)別kill kill -9 spid --------------------------------over game |
posted on 2014-08-28 10:12 順其自然EVO 閱讀(181) 評(píng)論(0) 編輯 收藏 所屬分類: 測(cè)試學(xué)習(xí)專欄