ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 轻松接触Oracle数据库中的Kill session

轻松接触Oracle数据库中的Kill session

原创 Linux操作系统 作者:ljm0211 时间:2012-06-20 16:17:45 0 删除 编辑
  问:当一个session被kill掉以 后,该session的 paddr被修改,如果有多个session被kill,那么多个session的paddr都会被更改为相同的进程地址,在这种情况下,资源是无法释放的,我选择了 查询spid,在操作系统级来kill这些进程。但是由于此时v$session.paddr已经改变,我已经无法通过v$session和v$process关联来获得 spid,那还可以怎么办呢?

答:具体示例如下:



现在我们获得了进程地址,就可以在v$process中找到spid,然后可以使用Kill或者orakill在系统级来杀掉这些进程。

当在Oracle中kill session以后, Oracle只是简单的把相关session的paddr 指向同一个虚拟地址.

此时v$process和v$session失去关联,进程就此中断,然后Oracle就等待PMON去清除这些Session.所以通常等待一个被标记为 Killed的Session退 出需要花费很长的时间,如果此时被Kill的process,重新尝试执行任务,那么马上会收到进程中断的提示,process退出,此时Oracle会立即启动 PMON 来清除该session。

ps:
select * from v$process where addr in (
Select p.addr From v$process p Where pid <> 1
minus
select s.paddr from v$session s
)

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

上一篇: oracle dbms_stats 包
请登录后发表评论 登录
全部评论

注册时间:2009-05-14

  • 博文量
    272
  • 访问量
    491372