设为首页 收藏本站
查看: 1138|回复: 0

[经验分享] 关于Window操作系统中对Oracle的性能监控

[复制链接]

尚未签到

发表于 2016-8-6 14:48:01 | 显示全部楼层 |阅读模式
  原创于2006年12月15日,2009年10月15日迁移至此。
  

  目的
本文是为了测试数据仓库的实时数据抽取功能对源数据库和操作系统的性能的影响。由于Windows操作系统未提供类似于UNIX下的Top、ps、vmstat等CPU、内存、I/O监控工具,同时 Oracle作为操作系统下的一个唯一进程而存在,这就导致windows操作系统在监控Oracle方面效果不是很理想。
  

一、任务管理器
任务管理器能够提供正在您的计算机上运行的程序和进程的相关信息。还显示最常用的度量进程性能的单位。
使用任务管理器可以监视计算机性能的关键指示器。可以查看正在运行的程序的状态,并终止已停止响应的程序。还可以使用多达 15 个参数评估正在运行的进程的活动,查看反映 CPU 和内存使用情况的图形和数据。
通过任务管理器的菜单—>查看—>选择列,可以自定义需要监测系统和用户进程的活动状况。
http://blog.itpub.net//resserver.php?blogId=25150&resource=windows%20task.JPG

任务管理器的使用是非常普遍的,因为它可以从宏观上反映出服务器系统的负载情况(CPU,内存,I/O,虚拟内存),进一步能够判断出机器硬件的配置和软件的运行状况。
但是任务管理器只能在进程这一级上进行监测,检测不到更细微的线程的运行情况,对于Oracle这样的大型数据库系统的监控显然不够的。

二、性能监视器
可以使用“性能”来自动收集本地或者远程计算机的性能数据。您可以使用“系统监视器”查看已记录的计数器数据,或者将数据导出到电子表格程序或用于分析和生成报表的数据库中。
与“系统监视器”相似,“性能日志和警报”支持定义:性能对象、性能计数器和性能对象实例。它同时支持为有关监视硬件资源和系统服务的数据设定采样间隔。
默认情况下,进程和线程实例附加了 #n(其中,n 是整数)(联机帮助中的解释,不太明白什么含意),缺省情况下,性能监视器无法对用户进程和进程内的线程情况进行跟踪,按照以下进行设置后,即可实现线程和用户进程的跟踪。
要添加进程标识符 ID,可以在KEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPerfProcPerformance 子项下创建名为 ProcessNameFormat 的 DWORD 值,并将其值设为 2。
同样,要添加线程 ID,可以在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesPerfProcPerformance 子项下创建名为 ThreadNameFormat 的 DWORD 值,并将其值设为 2。
http://blog.itpub.net//resserver.php?blogId=25150&resource=Performance3.JPG

       通常情况下需要监视的组件和关注对象,更详细的信息,请看计数器中的说明
        组件:磁盘
  正被监视的性能方面:用法
  要监视的计数器:
  物理磁盘 Disk Reads/sec(磁盘读取/秒)
  物理磁盘 Disk Writes/sec(磁盘写入/秒)
  逻辑磁盘 % Free Space(可用空间)
  组件:磁盘
  正被监视的性能方面:瓶颈
  要监视的计数器:物理磁盘 Avg.Disk Queue Length(磁盘队列平均长度)(所有实例)

  组件:内存
  正被监视的性能方面:用法
  要监视的计数器:
  内存 Available Bytes(可用字节)
  内存 Cache Bytes(缓存字节)
        组件:内存
  正被监视的性能方面:瓶颈或漏洞
  要监视的计数器:
  内存 Pages/sec(页面/秒)
  内存 Page Reads/sec(页面读取/秒)
  内存 Transition Faults/sec(传输错误/秒)
  内存 Pool Paged Bytes(分页的内存池字节)
  内存 Pool Nonpaged Bytes(未分页的内存池字节)

  组件:处理器
  正被监视的性能方面:用法
  要监视的计数器:处理器 % Processor Time(处理器时间)(所有实例)

  组件:处理器
  正被监视的性能方面:瓶颈
  要监视的计数器:
  系统 Processor Queue Length(处理器队列长度)(所有实例)
  处理器 Interrupts/sec(中断/秒)
  系统 Context switches/sec(上下文切换/秒)

1.      在性能的性能日志和警报 选择 计数器日志
2.      点击新建日志设置
http://blog.itpub.net//resserver.php?blogId=25150&resource=Performance.JPG

3.      在常规选项卡中选择添加计数器,性能对象选择 Thread,计数器中选择需要监控的性能指标,并在实例中选择相应的Oracle线程进行跟踪。
4.      然后在计数器日志中选择名称Oracle_Thread,进行启动
http://blog.itpub.net//resserver.php?blogId=25150&resource=Performance2.JPG

具体的计数器解释请看说明:

Example:% Processor Time 是所有进程线程使用处理器执行指令所花的时间百分比。指令是计算机执行的基础单位。线程是执行指令的对象,进程是程序运行时创建的对象。此计数包括处理某些硬件间隔和陷阱条件所执行的代码。
5.      运行相应的程序后一段时间后,停止Oracle_Thread计数器的运行
6.      在性能监视器中,选择工具栏查看日志活动,到指定的文件夹中选择相应的日志文件。
7.      然后可以通过查看图表,查看直方图,查看报告的工具 阅读和评估一段时间以来各个线程的运行状况。
8.      但是在系统监视器中无法显示两个不同测试阶段的的测试对比,可以在计数器日志  日志文件设置中日志的格式,通常是文本文件(制表符或者逗号分割方式)。然后将前后两段时间的数据倒入Excel表,利用Excel表的强大功能进行性能比较。
http://blog.itpub.net//resserver.php?blogId=25150&resource=cvs.JPG






三、QSlice工具
Qslice这个工具可以用来在Windows操作系统中观察用户进程(Oracle进程)及各线程的资源消耗,主要是从CPU占用率角度来衡量的。
http://blog.itpub.net//resserver.php?blogId=25150&resource=Qslice.JPG

使用getsql.sql脚本即可获得当前正在执行的SQL语句:
--来自Eygle网站上
REM getsql.sql
REM author eygle
REM 在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$processc
                               WHERE c.spid =TO_NUMBER ('&pid', 'xxxx')))
ORDER BY piece ASC
/
然后在PL/SQL中运行该脚本就可以找到最消耗资源的问题SQL,接下来就可以进行针对性调整了.
20068-qslice.exe将其改名为qslice即可

四、pslist工具
PsList是一个能够列出进程和其线程占用资源详细信息的小软件。
PsListis utility that shows you a combination of the information obtainableindividually with pmon and pstat. You can view process CPU and memoryinformation, or thread statistics. What makes PsList more powerful than theResource Kit tools is that you can view process and thread statistics on aremote computer.。
http://blog.itpub.net//resserver.php?blogId=25150&resource=plist.JPG
Pstools.chm
pslist.exe


五、关于Oracle进程和Windows线程的对照关系
事实上通过性能监视器或者QSlice工具、PsList看到的线程即可能是Oracle中的用户进程,也可能是Oracle的后台进程;这些工具给出的线程号也都是16进制的数字,不太有利于数据库的监控;因此我们必须把Oracle的后台进程以数据库的语言列举出来。
对于Oracle用户进程,则可以取出来在Oracle进行分析判断。
  


SELECT spid, name
  FROM V$BGPROCESS,V$PROCESS
WHEREV$BGPROCESS.paddr=V$PROCESS.addr;
Spid        name
1848       PMON
3100       DBW0
2568       LGWR
3080       CKPT
1868       SMON
3040       RECO
3776       CJQ0
2912       QMN0

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-253735-1-1.html 上篇帖子: (转载)Oracle Statspack 快速上手、使用手册 下篇帖子: (转)ORACLE内部函数大全以及与SQLSERVER的区别
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表