当前位置: 首页 > news >正文

oracle、sqlserver、postgresql、mysql 批量kill会话脚本汇总

一、 Oracle

数据库内操作

--单实例: select 'alter system kill session '''||s.sid||','||s.SERIAL#||''' immediate;' from v$session s where s.status='INACTIVE' --状态为非活跃 and s.USERNAME= 'ZZZ' --用户为ZZZZ and s.type<>'BACKGROUND' --不为oracle后台进程 and program not like '%(J0%' --不为oracle的JOB进程 and s.LOGON_TIME >= to_date('2020-09-12 08:00:00','YYYY-MM-DD HH24:MI:SS') -- 会话登录时间

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

# kill掉所有local=no的非本地连接进程 ps -ef|grep -v grep|grep LOCAL=NO|awk '{print $2}'|xargs kill -9

二、 SQL Server

kill 单个会话并查看回滚进度

kill <spid> kill <spid> with statusonly

kill 所有LCK相关被阻塞会话

select 'kill '+cast(spid as varchar) FROM sys.sysprocesses sp where spid>50 and blocked !=0 and spid != blocked and lastwaittype like 'LCK%' and loginame='XXX';

kill 所有LCK相关阻塞源会话

select 'kill '+cast(blocked as varchar) FROM sys.sysprocesses sp where spid>50 and spid != blocked and lastwaittype like 'LCK%' and loginame='XXX';

根据sql文本kill会话(适用于大量慢查询)

SELECT distinct concat('kill ',session_id), SUBSTRING(qt.text, (er.statement_start_offset / 2) + 1, ((CASE er.statement_end_offset WHEN -1 THEN DATALENGTH(qt.text) ELSE er.statement_end_offset END - er.statement_start_offset) / 2) + 1) AS stmt FROM sys.dm_exec_requests er CROSS APPLY sys.dm_exec_sql_text(er.sql_handle) qt WHERE er.session_Id > 50 and SUBSTRING(qt.text, (er.statement_start_offset / 2) + 1, ((CASE er.statement_end_offset WHEN -1 THEN DATALENGTH(qt.text) ELSE er.statement_end_offset END - er.statement_start_offset) / 2) + 1) like '%xxxx%';

kill阻塞中较低权重sql可参考

Detect and Automatically Kill Low Priority Blocking Sessions in SQL Server

kill 指定DB所有会话

DECLARE @DBNAME NVARCHAR(100) DECLARE @SQL NVARCHAR(MAX) DECLARE @SPID NVARCHAR(100) SET @DBNAME='dbname' -- 要kill掉连接的数据库名 DECLARE CurDBName CURSOR FOR SELECT [spid] FROM sys.sysprocesses WHERE [spid]>=50 AND DBID =DB_ID(@DBNAME) OPEN CurDBName FETCH NEXT FROM CurDBName INTO @SPID WHILE @@FETCH_STATUS = 0 BEGIN --kill process SET @SQL = N'kill '+@SPID EXEC (@SQL) FETCH NEXT FROM CurDBName INTO @SPID END CLOSE CurDBName DEALLOCATE CurDBName

三、 postgresql

不要在操作系统层直接kill 进程,即使是用户进程,被kill后也很可能导致pg直接挂掉,加重故障。

以下均为数据库内操作

  • 方案一,较保守、风险低,但是针对高并发的系统效果不好。因为kill的速度慢,跟不上再次上来的会话。
SELECT 'select pg_terminate_backend('||pid||');' FROM pg_stat_activity WHERE pid <> pg_backend_pid() -- 不kill掉自己的进程 and datname='ZZZ' --涉及到的数据库名 and usename='ZZZ' --涉及到的用户名 and query like '%ZZZ%' – 涉及到的语句 order by (now()-query_start) desc; – 根据执行时间长短排序,先kill执行时间长的
  • 方案二,针对高并发的情况,循环kill符合条件的会话至还剩1000个
with tmp3 as (select count(*) as cnt from pg_stat_activity WHERE pid <> pg_backend_pid() and datname='device_manager' and usename='app_rw' and state='active' and query like '%update%') select case when cnt <= 1000 then (with tmp1 as ( select pg_terminate_backend(pid) from (select pid from pg_stat_activity WHERE 1=2 ) as foo1) select count(*) from tmp1 ) when cnt > 1000 then (with tmp2 as ( select pg_terminate_backend(pid) from (select pid from pg_stat_activity WHERE pid <> pg_backend_pid() and datname='device_manager' and usename='app_rw' and state='active' and query like '%update%' order by backend_start limit 100) as foo2) select count(*) from tmp2 ) end as kill_if_too_many_process from tmp3 \watch 1;
  • 方案三,循环kill完符合条件的会话,更暴力
-- 1. 先确认pid对应的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; -- 2. 然后批量循环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;

四、 MySQL

1. aws

select concat('call mysql.rds_kill(',id,');') from information_schema.processlist where user='ZZZ' and info like '%ZZZ%' -- 当前消耗高的SQL语句 and command = '' -- 按照SQL语句的状态 order by time desc; -- 在SQL命令行得到的kill命令不能直接粘贴复制,可通过shell命令快速得到kill id的脚本 mysql -uroot -p -h xxxx < kill_query.sh > kill_id.txt

2. 阿里云

select concat('KILL ',id,';') from information_schema.processlist where user='ZZZ' -- 操作的数据库用户 and info like '%ZZZ%' -- 当前消耗高的SQL语句 and command = '' -- 按照SQL语句的状态 order by time desc; -- 根据操作时间排序,先kill执行时间长的; -- 在SQL命令行得到的kill命令不能直接粘贴复制,可通过shell命令快速得到kill id的脚本 mysql -uroot -p -h xxxx < kill_query.sh > kill_id.txt

3. 内网

3.1 数据库内操作

select concat('KILL ',id,';') from information_schema.processlist where info like '%ZZZ%'; -- 查询结果输出到文件 select concat('KILL ',id,';') from information_schema.processlist where info like '%ZZZ%' into outfile '/tmp/kill_session.sql'; -- 执行生成的sql文件 source /tmp/kill_session.sql;

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

  • 杀掉当前所有的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
http://www.jsqmd.com/news/1263752/

相关文章:

  • Jellium Desktop音频均衡器教程:创建专业音效配置
  • TkinterMapView性能优化:瓦片缓存机制与预加载策略提升地图流畅度
  • 2026 年至今,福田知名的自助洗车全国招加盟供应厂家找哪家,颠覆传统洗车业,这才是赚钱的秘密!-斑马智联洗车 - 行业严选官
  • 武汉高中学费太贵怎么办?武汉思久高级中学奖学金助学政策减轻家庭负担 - 湖北升学规划
  • 2026北京管道清洗公司推荐:自来水管网清洗,自来水管线清洗,供水管道清洗,供水管网清洗、供水管网清理,供水管网带压检测,供水管道带水检测,热水管道带压检测优质企业TOP5+避坑指南 - 海棠依旧大
  • 2026 年 7 月新发布:纳溪比较好的镀金镀银电子料回收厂家推荐几家,别再扔了!这批电子料的隐藏价值有多大?-昝氏设备回收 - 行业推荐【认证官】
  • 计算机Django毕设实战-基于 Python Web 的餐饮订单与菜品管理系统 智慧餐饮个性化服务管理系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Python毕设选题推荐:轻量化 Python 可视化技能学习实训平台 面向教学的数据可视化学习演示系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 四大操作系统深度对比:Windows、macOS、Linux与鸿蒙的核心差异与跨平台协作指南
  • Unity Resources加载性能瓶颈深度解析与优化实战指南
  • LavaMusic多语言支持配置:轻松实现24种语言的Discord音乐体验
  • 探索Nota语法:编写结构化文档的终极语法参考
  • 宠物行业女生创业优势大 科谷技校全套门店运营创业课程 - 湖北找学校
  • 复建训练
  • 武汉中考落榜生有普高读吗?武汉思久高级中学正规普高学籍可参加高考 - 湖北找学校
  • 伊犁防水修缮全指南:伊犁河谷湿润大陆性气候下的渗漏根治方案 - 资讯快报
  • AR3D-R1:强化学习驱动的文本到3D生成技术解析
  • 零基础开发者如何用Codex快速实现自动化脚本编写
  • 外贸提成按毛利还是按成交额?林芳老师说选错提成方式团队全废 - 外贸圈集团
  • 2026西安装修公司TOP10榜单|含明细报价、真实口碑与避坑攻略 - 资讯速览
  • 如何定制Type Theme:从配置到样式的完整指南,打造专属博客风格
  • BetterNCM安装器:3分钟为网易云音乐解锁无限插件功能
  • Front-End-FAQ无障碍开发指南:让你的网站兼容所有用户
  • 从Prompt到生产:LLM应用开发全栈实战指南
  • weblas深度解析:如何用GLSL着色器实现浏览器端高性能数值计算
  • AI大模型应用开发实战:从Prompt工程到RAG与工程化部署
  • 武汉民办普高学籍靠谱吗?武汉思久高级中学教育局备案正规普高代码 172 - 湖北升学规划
  • 2026年7月服务好的自由曲面镜片批发厂家怎么选择,自由曲面镜片定制厂家推荐 - 品牌推荐师
  • 2026 深圳红木家具搬运完整指南:专业公司选择、搬运包浆保护、榫卯拆装、保价与理赔一文讲透 - 厚道搬家
  • LMP核心组件揭秘:bpftool与libbpf如何构建高性能观测框架