千家信息网

DBA救火排杀脚本是什么

发表于:2024-09-24 作者:千家信息网编辑
千家信息网最后更新 2024年09月24日,这篇文章主要介绍"DBA救火排杀脚本是什么",在日常操作中,相信很多人在DBA救火排杀脚本是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"DBA救火排杀脚本是什么"
千家信息网最后更新 2024年09月24日DBA救火排杀脚本是什么

这篇文章主要介绍"DBA救火排杀脚本是什么",在日常操作中,相信很多人在DBA救火排杀脚本是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"DBA救火排杀脚本是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

作为一个压力山大的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救火排杀脚本是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0