oracle kill session的一些情况

最近一次数据维护的时候 ,kill  session 总结,中间出了一点小插曲 , 所以总结一下


数据库杀session 有两种方式, 第一种是通过 sid 和 serial# ,这是在我们可以在 系统 v$session  

里面可以获取到这两个参数。我们可以通过 username, 登录时间, machine 等条件进行过滤。

然后生成我们的alter system kill session 脚本

1.       通过oracle视图获取 已知的 sid ,serail#

ALTER SYSTEM KILLSESSION ' sid , serial#' ;

A.     杀掉对于的应用程序的链接:

select 'alter systemkill session '''||sid||','||SERIAL#||''' ;' from v$session  where  machine like 'xxtrade%' and username like 'xxTRP%' andstatus<>'KILLED';

B.     通过用户来杀应用

select 'alter systemkill session '''||sid||','||SERIAL#||''' ;' from v$session  where    username like 'TRADEAPP%'  and machine not like ‘本机’ ;

C.     通过时间来杀死一段时间内的session

select 'alter systemkill session '''||sid||','||SERIAL#||''' ;' from v$session  where username='TRADsdd'  and LOGON_TIME <to_date('2013050606','yyyymmddhh24')and STATUS <> 'ACTIVE';

 D.  根据时间和前一次执行时间来确定

select 'alter system kill session '''||sid||','||SERIAL#||''' ;' from v$session
where username='TRADExxx002'
and LOGON_TIME<to_date('2013050606','yyyymmddhh24')
and PREV_EXEC_START<sysdate-1/24;

第二种情况是在我们db中没有源信息的进程,就是 我们无法通过v$session,v$process. 

2.       通过kill  命令杀进程

Kill  pid

A.     如果process中满了,但是v$session 中没有对于的进程(账务就是这个情况)

selecta.spid,a.username from v$process a,v$session b where a.addr = b.paddr(+) andb.paddr is null ; 

之后通过spid 杀掉

B.     杀特定的进程

select a.spid,a.username from v$process a,v$session b wherea.addr = b.paddr and b.machine = ‘XXXX’ ;

 

kill -9 spid 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值