在windows下使用orakill清除oracle執行緒

husthxd發表於2005-03-07

windows下使用orakill清除oracle執行緒


由於windows 2000是基於執行緒的os,所有的使用者session所需的記憶體均在oracle.exe程式中分配,如果想單獨kill某個使用者的會話並釋放該會話所佔用的資源可以使用oracle的提供的工具orakill.

      1.         orakill的基本用法

C:>orakill sid threadid

其中sidoraclesid,threadid是要kill的執行緒id

2.         獲得執行緒id

1)      從微軟下載中心獲得qslice.exe工具,提取執行緒id.具體用法請參考相關文件.

2)      使用以下查詢獲得

select p.spid THREADID, s.osuser, s.program 

       from v$process p, v$session s

       where p.addr=s.paddr

       /

       select p.spid "OS Thread", b.name "Name-User", s.osuser, s.program

    from v$process p, v$session s, v$bgprocess b

    where p.addr = s.paddr

    and p.addr = b.paddr UNION ALL

    select p.spid "OS Thread", s.username "Name-User", s.osuser, s.program

    from v$process p, v$session s

    where p.addr = s.paddr

and s.username is not null

/

注意:osuserSYSTEMprogramoracle.exe的執行緒為oracle的後臺程式,如果kill這些程式會導致資料庫不可用。

可以用以下查詢驗證是否為後臺程式:

select vb.name NOME, vp.program PROCESSNAME, vp.spid THREADID, vs.sid SID 

       from v$session vs, v$process vp, v$bgprocess vb 

       where vb.paddr <> '00' and 

       vb.paddr = vp.addr and 

       vp.addr = vs.paddr

       /

 

本文可以任意轉載,轉載時請務必以超連結形式標明文章原始出處和作者資訊及本宣告

http://blog.itpub.net/post/11/20675 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-21699/,如需轉載,請註明出處,否則將追究法律責任。

相關文章