2010年10月14日 星期四

Workaround for failure of Orakill

還記得 Orakill也有失靈的時候 提到的,當你用Alter system kill session或者Orakill這兩個大絕都砍不掉死在裡面的session的時候,通常建議只有兩種,不是要你下定決心上patch外,就是要你直接閉著眼睛restart instance,雖然可以解決砍不掉的問題,但downtime時間令人難以忍受。今天恰巧又撞上這個難解之題,但這次手上有了Process Explore,對於Windows平台的Oracle來講可說是一大福音。Process Explore可以找出每個Process含有的Thread清單,這對於我們找出需要砍掉的session是很有幫助的。做法很簡單,首先利用下面SQL找出session的spid(thread handle):

select spid, osuser, s.program
  from 
v$process p, v$session s
where p.addr=s.paddr
   and s.sid=785    /*785是你session的session id */

然後打開Process Explore,將Process以Tree的方式展開,找到Oracke.exe後點選它,你就可以在下方看見Thread List;每個Thread後面都會有一個數字,那個就是Thread Handle ID,請確實的對它按右鍵(因為它會亂飄,挺好動的),選擇「Close Handle」,即可大功告成。一下子你就可以看到Oracle Database Control裡的Top Activities清爽多了。

沒有留言:

張貼留言