任务管理器 任务管理器能够提供正在您的计算机上运行的程序和进程的相关信息还显示最常用的度量进程性能的单位
使用任务管理器可以监视计算机性能的关键指示器可以查看正在运行的程序的状态并终止已停止响应的程序还可以使用多达 个参数评估正在运行的进程的活动查看反映 CPU 和内存使用情况的图形和数据
通过任务管理器的菜单—>查看—>选择列可以自定义需要监测系统和用户进程的活动状况
任务管理器的使用是非常普遍的因为它可以从宏观上反映出服务器系统的负载情况(CPU内存I/O虚拟内存)进一步能够判断出机器硬件的配置和软件的运行状况
但是任务管理器只能在进程这一级上进行监测检测不到更细微的线程的运行情况对于Oracle这样的大型数据库系统的监控显然不够的
性能监视器 可以使用性能来自动收集本地或者远程计算机的性能数据您可以使用系统监视器查看已记录的计数器数据或者将数据导出到电子表格程序或用于分析和生成报表的数据库中
与系统监视器相似性能日志和警报支持定义性能对象性能计数器和性能对象实例它同时支持为有关监视硬件资源和系统服务的数据设定采样间隔
默认情况下进程和线程实例附加了 #n(其中n 是整数)(联机帮助中的解释不太明白什么含意)缺省情况下性能监视器无法对用户进程和进程内的线程情况进行跟蹤按照以下进行设置后即可实现线程和用户进程的跟蹤
要添加进程标识符 ID可以在 KEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance 子项下创建名为 ProcessNameFormat 的 DWORD 值并将其值设为
同样要添加线程 ID可以在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance 子项下创建名为 ThreadNameFormat 的 DWORD 值并将其值设为
通常情况下需要监视的组件和关注对象更详细的信息请看计数器中的说明
组件磁盘
正被监视的性能方面用法
要监视的计数器
物理磁盘\ Disk Reads/sec(磁盘读取/秒)
物理磁盘\ Disk Writes/sec(磁盘写入/秒)
逻辑磁盘\ % Free Space(可用空间)
组件磁盘
正被监视的性能方面瓶颈
要监视的计数器物理磁盘\ AvgDisk 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(上下文切换/秒)
在性能 的性能日志和警报 选择 计数器日志
点击 新建日志设置
在常规选项卡中选择添加计数器性能对象选择 Thread计数器中选择需要监控的性能指标并在实例中选择相应的Oracle线程进行跟蹤
然后在计数器日志中选择名称 Oracle_Thread进行启动
具体的计数器解释请看说明
% Processor Time 是所有进程线程使用处理器执行指令所花的时间百分比指令是计算机执行的基础单位线程是执行指令的对象进程是程序运行时创建的对象此计数包括处理某些硬件间隔和陷阱条件所执行的代码
运行相应的程序后一段时间后停止Oracle_Thread计数器的运行
在性能监视器中选择工具栏 查看日志活动到指定的文件夹中选择相应的日志文件
然后可以通过 查看图表查看直方图查看报告的工具 阅读和评估一段时间以来各个线程的运行状况
但是在系统监视器中无法显示两个不同测试阶段的的测试对比可以在计数器日志 日志文件设置中日志的格式通常是文本文件(制表符或者逗号分割方式)然后将前后两段时间的数据倒入Excel表利用Excel表的强大功能进行性能比较
QSlice工具
Qslice这个工具可以用来在Windows操作系统中观察用户进程(Oracle进程)及各线程的资源消耗主要是从CPU占用率角度来衡量的
使用getsqlsql脚本即可获得当前正在执行的SQL语句
来自Eygle网站上
REM getsqlsql
REM author eygle
REM 在windows上已知进程ID得到当前正在执行的语句
REM 在windows上进程ID为进制需要转换在UNIX直接为进制
SELECT /*+ ORDERED */
sql_text
FROM v$sqltext a
WHERE (ahash_value aaddress) IN (
SELECT DECODE (sql_hash_value
prev_hash_value
sql_hash_value
)
DECODE (sql_hash_value prev_sql_addr sql_address)
FROM v$session b
WHERE bpaddr = (SELECT addr
FROM v$process c
WHERE cspid = TO_NUMBER (&pid xxxx)))
ORDER BY piece ASC
/
然后在PL/SQL中运行该脚本就可以找到最消耗资源的问题SQL接下来就可以进行针对性调整了
pslist工具
PsList是一个能够列出进程和其线程占用资源详细信息的小软件
PsList is utility that shows you a combination of the information obtainable individually with pmon and pstat You can view process CPU and memory information or thread statistics What makes PsList more powerful than the Resource Kit tools is that you can view process and thread statistics on a remote computer
{$PageTitle关于Oracle进程和Windows线程的对照关系}
关于Oracle进程和Windows线程的对照关系
事实上通过性能监视器或者QSlice工具PsList看到的线程即可能是Oracle中的用户进程也可能是Oracle的后台进程这些工具给出的线程号也都是进制的数字不太有利于数据库的监控因此我们必须把Oracle的后台进程以数据库的语言列举出来
对于Oracle用户进程则可以取出来在Oracle进行分析判断