如何在Windows 2000环境中Kill掉单个Oracle线程
来源:互联网 发布:shadow defender 知乎 编辑:程序博客网 时间:2024/05/16 07:46
如何在Windows 2000环境中Kill掉单个Oracle线程
来源:Oracle.com/">http://metalink.Oracle.com
描述:本文说明在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号
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_NTdjones SVRMGRL.EXE
281 SSMITH-PCssmith 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
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 如何在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数据库
- 从App到Application (CSDN)
- 手工转移数据库Step By Step
- 一段log execption 的代码
- 伟大的解决方案—DataWindow.Net(一)
- 大数据量下的分页
- 如何在Windows 2000环境中Kill掉单个Oracle线程
- 使用C#拷贝String到struct
- SQL SERVER 2000系统提供的跟踪函数(一)
- Visual Basic .NET中的异常处理简介(上)
- SQL SERVER 2000系统提供的跟踪函数(二)
- beta2中的SqlConnection和SqlCommand
- Mysql的常用命令
- 一番话:抽象工厂
- ORACLE性能诊断―学习statspack笔记(三)[表的分类]