oracle数据库 杀进程,数据库应急杀进程脚本
(1)數(shù)據(jù)庫(kù)內(nèi)操作:
方案一,較保守、風(fēng)險(xiǎn)低,但是針對(duì)高并發(fā)的系統(tǒng)效果不好。因?yàn)閗ill的速度慢,跟不上再次上來(lái)的會(huì)話。
SELECT 'select pg_terminate_backend('||pid||');' FROM pg_stat_activity
WHERE pid <> pg_backend_pid() -- 不kill掉自己的進(jìn)程
and datname='ZZZ' --涉及到的數(shù)據(jù)庫(kù)名
and usename='ZZZ' --涉及到的用戶名
and query like '%ZZZ%' – 涉及到的語(yǔ)句
order by (now()-query_start) desc – 根據(jù)執(zhí)行時(shí)間長(zhǎng)短排序,先kill執(zhí)行時(shí)間長(zhǎng)的
;
方案二,可以針對(duì)高并發(fā)系統(tǒng),會(huì)話上來(lái)很快,且kong端雖然限流但是還是沒有限制住(可能是開發(fā)沒找對(duì)接口,報(bào)給運(yùn)維限制了kong,但是還是有大量的會(huì)話進(jìn)來(lái))
1. 先確認(rèn)pid對(duì)應(yīng)的sql是需要kill的sql,沒有別的類似相似的sql干擾:
SELECT pid,query FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
and datname='XXX'
and usename='YYY' and state='active'
and query like '%ZZZZZZZZ%'
order by (now()-query_start) desc;
如:
SELECT pid,query FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
and datname='flysafe_websdite'
and usename='app_rw' and state='active'
and query like '%SELECT * FROM "quiz_info" WHERE "quiz_info"."deleted_at" IS NULL AND (("questionnaire_id" IN ($1)) AND (enc_sn = $2))%'
order by (now()-query_start) desc;
2.然后批量循環(huán)kill session
select pg_terminate_backend(pid) from (SELECT pid FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
and datname='XXX'
and usename='YYY' and state='active'
and query like '%ZZZ%'
) a \watch 5;
如:
select pg_terminate_backend(pid) from (SELECT pid FROM pg_stat_activity
WHERE pid <> pg_backend_pid()
and datname='flysafe_websdite'
and usename='app_rw' and state='active'
and query like '%SELECT * FROM "quiz_info" WHERE "quiz_info"."deleted_at" IS NULL AND (("questionnaire_id" IN ($1)) AND (enc_sn = $2))%'
) a \watch 5;
總結(jié)
以上是生活随笔為你收集整理的oracle数据库 杀进程,数据库应急杀进程脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 总账 gl,oracle
- 下一篇: linux cmake编译源码,linu