如何在Windows 2000环境中Kill掉单个Oracle线程
来源:互联网 发布:sql server 维护计划 编辑:程序博客网 时间:2024/05/20 09:26
如何在Windows 2000环境中Kill掉单个Oracle线程
关键字: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:stevenqiu@sohu.com
- 如何在Windows 2000环境中Kill掉单个Oracle线程
- 如何在Windows 2000环境中Kill掉单个Oracle线程
- Windows环境中Kill掉Oracle线程(orakill)
- Windows环境中Kill掉Oracle线程(orakill)
- python中如何kill掉线程
- Windows操作系统kill Oracle线程的实施方案
- 如何在单个Oracle实例中创建多个Geodatabase
- 如何在单个Oracle实例中创建多个Geodatabase
- ORACLE如何kill掉session
- kill掉oracle中进程
- Oracle kill inactive 线程
- Oracle kill inactive 线程
- 如何在Windows环境中下载OpenCore
- 如何在Windows环境中下载OpenCore
- 在.NET中如何取单个值
- 在win7环境下测试oracle kill long transaction
- 如何kill掉oracle中的session
- Windows如何在Python环境下连接Oracle数据库
- ZWeily的小品文(二)C++入门教程(1)
- ZWeily的小品文(三)C++入门教程(2)
- ZWeily的小品文(四)C++入门教程(3)
- ZWeily的小品文(五)C++入门教程(4)
- 如何自动获取Oracle数据库启动时在Shared pool里面的对象(翻译)
- 如何在Windows 2000环境中Kill掉单个Oracle线程
- 用c#和jmail开发Asp.net的mail发送
- 软件与中西方文化
- 打造属于自己的可视Web HTML编辑器
- 用汇编编写DOS下的内存驻留程序(1)
- 用汇编编写DOS下的内存驻留程序(2)
- 用汇编编写DOS下的内存驻留程序(3)
- 用汇编编写DOS下的内存驻留程序(4)
- 用汇编编写DOS下的内存驻留程序(5)