oracle中已killed session的处理

        今天对数据库巡查的时候发现有个session已经killed但是oracle很久都没有把资源回收,session标志为killed肯定是有人用alter system kill session 'sid,serial#' 来杀进程了,被kill的进程由于其paddr发生变化,已经不能通过v$session和v$process视图关联来查找spid了,怎么办呢?
        首先通过下面sql查找在v$process中存在而不在v$session中存在的进程:
        select p.addr from v$process p where pid <> 1
        minus
        select s.paddr from v$session s;

        查询显示结果如下:
        ADDR
        ----------------
        C0000005C32975D8
        C0000005C3297AE0
        C0000005C3297FE8

        确认这些进程是否为重要的后台进程:
        select spid, username, terminal, program, background from v$process where addr in ('C0000005C32975D8', 'C0000005C3297AE0', 'C0000005C3297FE8');

         查询结果:
SPID     USERNAME TERMINAL              PROGRAM                          BACKGROUND
------------ -------- ------------------------------ -----------------------------------  ---------------------
6857         oracle   UNKNOWN                  oracle@mgdev (S000)
6859         oracle   UNKNOWN                  oracle@mgdev (D000)
9370         oracle   UNKNOWN                  oracle@mgdev (TNS V1-V3)

        可以看到都不是重要的后台进程,前两个是和共享服务器相关的进程,第3个就是要找的进程了,它正好也是通过TNS连上的,执行:
        kill -9 9370,然后查询:
        select sid, username, program, machine, status from v$session where status='KILLED';

        没有返回任何结果,至此处理完毕。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/339291/viewspace-269176/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/339291/viewspace-269176/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值