前言
昨儿我在机房睡得正酣的时候,开发人员发来求救讯息,说是Oracle数据库上的一个会话无法被彻底杀死,并告知了SID号和进程状态(killed)。没有多问,我立马发下手机,打开电脑,娴熟的敲下sqlplus,连入目标数据库进行查看。
步骤
part1 验证信息
根据开发人员报过来的SID号,查询会话的状态是否属实。经检查,确实是处在KILLED的状态。
select sid,serial#,usename from gv$session where sid=&sid;
复制
part2 常规方法杀死会话
alter system kill session 'sid,serial';
复制
执行命令并等待几分钟后,弹出报错,提示会话正在被KILLED
part3 暴力方法杀死会话
alter system kill session 'sid,serial' immediate;
复制
依旧弹出报错,会话正在被KILLED,尝试过在语句后带上abort参数,但是系统无法执行该命令。
part4 查询会话的PID号,查看对应的操作系统进程
结合v$process视图,我们可以查到数据库会话对应的操作系统进程,发现这是一个j开头的进程,代表它是数据库的一个job任务。
select s.sid,s.serial#,p.spid from v$session s join v$process p on s.paddr=p.addr where s.sid=&sid;
复制
part 5 操作系统层面暴力终止进程
这一步想必大家都比较熟悉,KILL -9 带上pid号就可以强制终止进程,值得注意的是,执行前记得要反复确认,因为有些系统进程如果被终止,会导致数据库挂掉,一般后缀带local=no的都可以放心的kill。
part 6
再次验证数据会话的状态,查询不到信息,已经被成功的终止。
select sid,serial#,usename from gv$session where sid=&sid;
复制
总结
任凭数据库再厉害,始终也是一套安装在操作系统上的软件而已,所以对于一些数据库的问题,不妨跳出来,在操作系统上去思考,也许就能找到问题的解决办法。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1322次阅读
2025-04-09 15:33:27
【DBA坦白局】第一期:在小城市和一线城市做DBA,是“躺”还是“卷”?
墨天轮编辑部
1144次阅读
2025-04-10 14:17:22
Oracle Concepts(Oracle 19c):07 SQL
Ryan Bai
960次阅读
2025-04-09 10:57:11
2025年3月国产数据库大事记
墨天轮编辑部
737次阅读
2025-04-03 15:21:16
Oracle数据库常用的78个脚本,速来下载!
陈举超
597次阅读
2025-03-27 12:27:50
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
536次阅读
2025-04-10 15:35:48
东方通 TongWeb 中间件入门指南: 轻松掌握从部署到认证
shunwah
499次阅读
2025-03-19 15:09:52
Oracle DBA 高效运维指南:高频实用 SQL 大全
Lucifer三思而后行
490次阅读
2025-03-28 21:52:03
如何利用Deepseek自动优化SQL并推送
潇湘秦
470次阅读
2025-03-28 10:02:33
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
458次阅读
2025-04-01 20:42:12