登录
首页 >  文章 >  软件教程

Windows工具管理Nt上的Oracle数据库攻略

时间:2025-05-08 22:30:40 153浏览 收藏

在Windows系统上管理Oracle数据库时,Top工具可以帮助监控最耗资源的进程。然而,由于Windows的多线程特性,与UNIX不同,仅靠Top工具无法直接识别每个连接的用户进程。本文介绍了如何通过QSLICE工具和getsql.sql脚本,找到并优化导致资源过度消耗的问题SQL语句,从而有效管理和优化Oracle数据库在Windows上的性能。

原文链接:

http://www.eygle.com/faq/Use.Nt.tools.manage.Oracle.htm

1.TOP

Top工具可用于监控系统中最耗资源的进程。

Pid即进程ID,Windows是多线程服务器,每个进程包含多个线程,这与UNIX不同,UNIX中的每个Oracle进程是独立的,而在Nt上,所有线程都由Oracle进程派生。

因此,仅使用Top工具,我们无法识别每个连接的用户进程。

使用Windows工具管理Nt上的Oracle数据库71% 00000000?1?16384?0?8:52:53.936 No Name Found0% 00000008?4116?282624?24576?0:00:45.164 System1% 000000B8?27023?991232 2207744?0:03:10.313 CSRSS.EXE0% 00000524?1844 2035712 3137536?0:00:11.726 rundll32.exe0% 0000032C?1002 1765376 1380352?0:00:08.432 AOM.exe0% 000004E8?773695 7610368 8146944?0:04:26.533 XDICT.EXE0% 00000720?583880 5079040 33280000?0:08:29.122 NetCaptor.exe23% 000006F4?11882 37056512 79757312?0:00:07.661 oracle.exe0% 00000420?1622 1478656 2420736?0:00:00.170 SQLPLUS.EXE如果在Windows上某个进程的SQL或其他问题导致资源过度占用或消耗,比如如下这样一条语句,我们如何找到这条问题SQL呢?

使用Windows工具管理Nt上的Oracle数据库2.QSLICE

首先,找到最消耗资源的线程号,在本例中为(6ec),它是以16进制显示的,需要转换成十进制,而v$process视图中的进程ID是以十进制表示的。

使用Windows工具管理Nt上的Oracle数据库使用getsql.sql脚本即可获取当前正在执行的SQL语句:

REM getsql.sqlREM author eygleREM 在windows上,已知进程ID,得到当前正在执行的语句REM 在windows上,进程ID为16进制,需要转换,在UNIX直接为10进制SELECT /\*+ ORDERED \*/ sql\_text FROM v$sqltext a WHERE (a.hash\_value, a.address) IN ( SELECT DECODE (sql\_hash\_value, 0, prev\_hash\_value, sql\_hash\_value ), DECODE (sql\_hash\_value, 0, prev\_sql\_addr, sql\_address) FROM v$session b WHERE b.paddr = (SELECT addr FROM v$process c WHERE c.spid = TO\_NUMBER ('&pid', 'xxxx')))ORDER BY piece ASC/ 运行以上脚本:

使用Windows工具管理Nt上的Oracle数据库这样,我们就找到了最消耗资源的问题SQL,然后可以进行针对性的调整。

相关工具下载地址:

http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/qslice-o.asp

以上就是《Windows工具管理Nt上的Oracle数据库攻略》的详细内容,更多关于Windows,Oracle,top,QSLICE,getsql.sql的资料请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>