首页 > 数据库 > Oracle > 正文

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

2024-08-29 13:29:37
字体:
来源:转载
供稿:网友

link:


http://www.eygle.com/faq/use.nt.tools.manage.oracle.htm


1.top

top 工具可以监视最消耗系统资源的进程

pid 即process id,windows是多线程服务器,每个进程包含一系列线程,这个与unix不同,unix每个oralce进程独立存在,在nt上所有线程由oralce进程衍生。

所以只用top工具我们还无法找出每个连接的用户进程。





 

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呢?



2.qslice

找到最消耗资源的线程号,本例中为(6ec),为16进制,需要转换,v$process视图中的进程id为十进制



使用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/

运行以上脚本:



 

ok,找到这最消耗资源的问题sql接下来就可以进行针对性调整了.

相关工具下载地址:

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

 

 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表