在windows下使用orakill清除oracle线程
由于windows 2000是基于线程的os,所有的用户session所需的内存均在oracle.exe进程中分配,如果想单独kill某个用户的会话并释放该会话所占用的资源可以使用oracle的提供的工具orakill.
1. orakill的基本用法
C:>orakill sid threadid
其中sid是oracle的sid,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
/
注意:osuser为SYSTEM,program为oracle.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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/6906/viewspace-21699/