This Domain(Admin5.com) is for Sale:

Oracle中Kill session的研究

时间:2007-12-23  来源:不详  作者:迈克DB

SYSACTIVE542B6D3828240710
542B70E811524081195EV
542B749811524081195EV
SYSINACTIVE542B7848000
SYSINACTIVE542B7BF811524081195EV

16rowsselected.


我们注重,红字标出的部分就是被Kill掉的进程的进程地址.

简化一点,其实就是如下概念:
SQL>selectp.addrfromv$processpwherepid<>12minus3selects.paddrfromv$sessions;
ADDR
--------
542B70E8
542B7498


Ok,现在我们获得了进程地址,就可以在v$process中找到spid,然后可以使用Kill或者orakill在系统级来杀掉这些进程.实际上,我猜测:当在Oracle中killsession以后,Oracle只是简单的把相关session的paddr指向同一个虚拟地址.此时v$process和v$session失去关联,进程就此中断.然后Oracle就等待PMON去清除这些Session.所以通常等待一个被标记为Killed的Session退出需要花费很长的时间.假如此时被Kill的process,重新尝试执行任务,那么马上会收到进程中断的提示,process退出,此时Oracle会立即启动PMON来清除该session.这被作为一次异常中断处理.

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息