• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-7-02 11:08 | 作者: admin | 来源: | 查看: 8次 | 进入软件测试论坛讨论

领测软件测试网
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

 

 

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网