博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

star_zhang

我不能预知明天,但可以把握今天. 在有限的时间里,一定要好好学习! Linux,solaris,unix for Oracle!!! 努力学习非微软的技术,在这留下一个大的脚印.
starzhang.cublog.cn
kill session
先从oracle中作alter system kill session,不会一开始就跑到os中去kill -9

但是有的时候,这个命令作下去以后,有的时候,系统不会提示system altered,而是提示说session marked killed,当提示这个的时候,就要注意了,这种提示出来,一般系统不会立刻释放被kill的session的资源,可能需要很久.

那么,这个时候,肯定想跑到os中用kill -9去干活.

不过这个时候,由于killed的session的paddr已经变成了一个虚拟的paddr,所以无法在v$process中得到该session在数据库主机的spid,给kill -9带来一些麻烦

一般的处理方法是先

select p.addr from v$process p where pid <> 1
  minus
  select s.paddr from v$session s;

去获取killed的sessin的真实的paddr,然后去os中kill -9

一般情况下,这种方式是能得到真实的paddr的,但是,如果被killed的session锁住了资源不释放,在v$locked_object中反映出来有锁住资源,用上面的方法,是得不到该session的paddr的,这个时候该怎么办?

其实这个时候得到paddr的方法更为简单,如果该session有占有锁资源不释放,在session被标记为killed以后,其paddr本身就是真实的,那么,只要直接查询v$process就可以得到,然后去kill -9就搞定.这种情况比较少见,不过也会发生

发表于: 2008-02-22,修改于: 2008-02-22 11:19,已浏览171次,有评论0条 推荐 投诉

给我留言
版权所有 ChinaUnix.net 页面生成时间:0.96917