暂无图片
暂无图片
4
暂无图片
暂无图片
暂无图片

oracle mysql postgresql opengauss KILL会话及批量kill会话方式 kill session

原创 悠游 2022-04-15
5142

oracle

alter system kill session 'sid,serial#' immed; (根据v$session中查出sid和serial#进行替换


这里提供一个常用脚本,支持跨实例kill会话 (替换&1条件或放到脚本@调用都行)

select 'alter system kill session '''||sid||','||serial#||decode(inst_id,1,',@1',2,',@2')||''' immediate -- '||username||'@'||machine||' ('||program||');'from gv$session where &1 and sid != (select sid from v$mystat where rownum = 1) ;


操作系统层kill

ps -ef |grep LOCAL=NO|grep -v grep|awk '{print $2}'|xargs kill -9



mysql

根据processlist中ID直接kill

kill **;


批量kill

SELECT CONCAT('kill ',id,';') FROM information_schema.PROCESSLIST where db='mysql';


操作系统中操作(要求登录到数据库主机)

杀掉当前所有的MySQL连接
mysqladmin -uroot -p processlist|awk -F "|" '{print $2}'|xargs -n 1 mysqladmin -uroot -p kill
杀掉指定用户运行的连接,这里为Mike
# 假定kill掉所有ZZZ用户的线程

mysqladmin -uroot -p processlist|awk -F "|" '{if($3 == "Mike")print $2}'|xargs -n 1 mysqladmin -uroot -p kill


postgresql

删除进程有两个内置函数
1.pg_cancel_backend(pid)

2.pg_terminate_backend(pid)

第一个函数只对取消查询操作有效,第二个则等同于OS的kill pid




批量kill会话

select pg_terminate_backend(pid) from pg_stat_activity where pid <> pg_backend_pid() and datname='mydb' and application_name='psql';


操作系统层批量kill

 ps -ef|grep postgres|grep idle |awk '{print $2}' | xargs kill




openGauss

语法格式

ALTER SYSTEM KILL SESSION 'session_sid, serial' [ IMMEDIATE ];

参数说明

  • session_sid, serial

    会话的SID和SERIAL(获取方法请参考示例)。

  • IMMEDIATE

    表明会话将在命令执行后立即结束。

--查询会话信息。
postgres=#
SELECT sa.sessionid AS sid,0::integer AS serial#,ad.rolname AS username FROM pg_stat_get_activity(NULL) AS saLEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)WHERE sa.application_name <> 'JobScheduler';


--结束SID为140131075880720的会话。
postgres=# ALTER SYSTEM KILL SESSION '140131075880720,0' IMMEDIATE;



pg_stat_get_activity(null)获取的是PG视图pg_stat_activity的信息但看起来没获取全

我只试验了使用application_name可以过滤

SELECT sa.sessionid AS sid,0::integer AS serial#,ad.rolname AS username FROM pg_stat_get_activity(NULL) AS saLEFT JOIN pg_authid ad ON(sa.usesysid = ad.oid)WHERE sa.application_name <> 'JobScheduler' and application_name='gsql';


操作系统层批量kill

 ps -ef|grep postgres|grep -v grep |awk '{print $2}' | xargs kill

最后修改时间:2022-04-15 13:37:33
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论