您好,登錄后才能下訂單哦!
這篇文章主要介紹“DBA救火排殺腳本是什么”,在日常操作中,相信很多人在DBA救火排殺腳本是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”DBA救火排殺腳本是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
作為一個壓力山大的DBA,很多時候需要面對處理一些緊急突發(fā)的救火任務,當業(yè)務出現(xiàn)異常,性能接近癱瘓的奪命一刻,需要果斷出擊,把系統(tǒng)業(yè)務的影響減少到最小,至于原因分析,可以交到后續(xù)分析,下面將針對不同的困境,作出排殺處理:
1,批量殺掉oracle連接進程:這種情況是終極絕招,在面對性能將要癱瘓的局面,可以立刻解決問題,但正在等待的業(yè)務或事務會被強行終止,需要重新請求!
ps -ef | grep LOCAL=NO | awk '{print $2}' | xargs kill -9
2,DBA能定位到引起性能異常的SQL,在數(shù)據(jù)庫還能連接響應的情況下,批量生成kill -9的SQL批殺腳本:
select 'kill -9 '||spid from v$process where addr in (select paddr from v$session where sid in(select c.sid from v$session c Where username ='MBS7_OMS' and event='SQL*Net message from dblink') );
3,DBA能定位到引起性能異常的schema,并且這個影響是整個schema層面業(yè)務的,在數(shù)據(jù)庫還能連接響應的情況下,查殺同一個用戶的會話:
select 'alter system kill session '''||c.sid||','||c.SERIAL# ||''';' from v$session c Where username ='RRJC' ;
3,這個跟上面第二點相似,查殺同一個SQLID的會話:
select 'alter system kill session '''||c.sid||','||c.SERIAL# ||''' immediate;' from v$session c where sql_id='1vnbgy700u1cu' ;
4,有時候需要排查一些連接進程的情況,方便跟蹤性能問題,下面是查看同一個SQL_iD的登陸請求信息:
select sql_id,logon_time,machine,terminal,osuser from v$session where sql_id='1vnbgy700u1cu' order by logon_time desc;
–謹記kill后面加immediate參數(shù),否則會讓pmon回收很久!如不幸用了傳統(tǒng)kill,可用下面方法再度釋放:
select 'alter system kill session '''||c.sid||','||c.SERIAL# ||''' immediate;' from v$session c Where username ='FRNT' and machine in ('jk2','biweb2') and status='KILLED';
如果會話已經(jīng)在DB里killed,上面的SQL已經(jīng)查不出spid,可以用下面的SQL查出SPID
select addr, pid, spid FROM v$process p where addr in (select p.addr from v$process p where pid <> 1 minus select s.paddr from v$session s);
到此,關于“DBA救火排殺腳本是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。