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.这被作为一次异常中断处理.
上一篇:Rman操作简单分析 下一篇:如何查询redo logfile的使用率
文章评论
共有位Admini5网友发表了评论 查看完整内容