如何在Windows 2000环境中Kill掉单个Oracle线程

** 如何在 Windows 2000 ** ** 环境中 Kill ** ** 掉单个 Oracle ** ** 线程 **


来源: http://metalink.oracle.com

关键字: Oracle Thread Kill

描述 : 本文说明在 Windows 环境下, Orakill 工具的使用

正文:

你遇到过下面类似的情况吗?一个用户进程长期占用资源而不释放,导致 Oracle 进程占用了系统的大量资源, Oralce 系统的效率变得很低。如果简单的关闭重启 Oracle 实例,势必影响所有的用户。有没有办法仅仅只 Kill 掉有问题的用户进程而不用关闭整个 Oralce 实例呢?答案是可以的,使用 Oralce 提供的一个名叫 Orakill 的工具。

大家都知道, Windows 2000 是一个基于线程的操作系统,而不是象 Unix 、 Linux 那样基于进程的操作系统。整个 Oracle 的后台进程、用户进程等,在 Windows 2000 环境下,都包含在 ORACLE.EXE 这单独的一个体系进程中了,通过查看 ’ 任务管理器 ’ ―― ’ 进程 ’ 就可以看到。如果你不是使用 MTS 多线程服务器的模式,如果你 Kill 掉 ORACLE.EXE 这个进程,将导致整个 Oracle 实例关闭,如同使用 Shutdown abort 命令一样。

由于 Windows 自己没有提过一个专门用来 Kill 掉单个线程的工具,因此 Oracle 从 Oracle7.3.3.6 开始,自己提供了一个基于字符界面的用来在 Windows 环境下强制 Kill 掉一个线程的工具―― Orakill 。

Orakill 的使用方法如下:

Dos 提示符下 :>orakill sid thread

说明: sid Oracle 的 Sid 号

thread Oracle 的线程 id 号

在 Sql*plus 工具里面可以查询到 Oracle 的线程号

sql:>Select p.spid THREADID, s.osuser, s.program

sql:>From v$process p, v$session s

sql:>Where p.addr = s.addr

结果如下:

THREADID OSUSER PROGRAM

--------- ----------------------- -----------------------------

169 SYSTEM ORACLE.EXE

215 SYSTEM ORACLE.EXE

280 SYSTEM ORACLE.EXE

267 SYSTEM ORACLE.EXE

287 SYSTEM ORACLE.EXE

288 SYSTEM ORACLE.EXE

271 SYSTEM ORACLE.EXE

282 SYSTEM ORACLE.EXE

266

269

239 PROD_NT\djones SVRMGRL.EXE

281 SSMITH-PC\ssmith SQLPLUSW.EXE

12 rows selected.

需要注意的是,如果你 Kill掉的是Oracle的核心后台线程(DBWR, LGWR, SMON or PMON),将导致Oracle实例关闭。检查Oracle的核心后台线程的方法如下:

sql:>Select vb.name NOME, vp.programe PROCESSNAME, vp.spid THREADID, vs,sid SID

sql:>From v$session vs, v$process vp, v$bgprocess vb

sql:>Where vb.addr <> ‘ 00 ’ and

sql:>vb.paddr = vp.addr and

sql:>vp.addr = vs.paddr

查询结果如下:

NOME PROCESSNAME THREADID SID

----- ----------------------------------- --------- ------

PMON ORACLE.EXE 169 1

DBW0 ORACLE.EXE 215 2

LGWR ORACLE.EXE 280 3

CKPT ORACLE.EXE 267 4

SMON ORACLE.EXE 287 5

RECO ORACLE.EXE 288 6

SNP0 ORACLE.EXE 271 7

SNP1 ORACLE.EXE 282 8

8 rows selected.

欢迎大家来交流 mailto:[email protected]

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus