共计 1597 个字符,预计需要花费 4 分钟才能阅读完成。
这篇文章主要介绍“DBA 救火排杀脚本是什么”,在日常操作中,相信很多人在 DBA 救火排杀脚本是什么问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”DBA 救火排杀脚本是什么”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!
作为一个压力山大的 DBA,很多时候需要面对处理一些紧急突发的救火任务,当业务出现异常,性能接近瘫痪的夺命一刻,需要果断出击,把系统业务的影响减少到最小,至于原因分析,可以交到后续分析,下面将针对不同的困境,作出排杀处理:
1,批量杀掉 oracle 连接进程:这种情况是终极绝招,在面对性能将要瘫痪的局面,可以立刻解决问题,但正在等待的业务或事务会被强行终止,需要重新请求!
ps -ef | grep LOCAL=NO | awk {print $2} | xargs kill -9
2,DBA 能定位到引起性能异常的 SQL,在数据库还能连接响应的情况下,批量生成 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 层面业务的,在数据库还能连接响应的情况下,查杀同一个用户的会话:
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 参数,否则会让 pmon 回收很久!如不幸用了传统 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
如果会话已经在 DB 里 killed,上面的 SQL 已经查不出 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 救火排杀脚本是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!