目录
一、添加自定义计数器的方法
1、要创建自定义查询,请执行以下操作:
1. 在安装路径的Mercury LoadRunner\dat\monitors找到vmon.cfg文件,打开。
2. 在vmon.cfg文件的第三行中,CustomCounters=指出要创建的自定义计数器个数。
3. 在vmon.cfg文件中为新计数器新建一节,每节都有以下格式:
[Custom0]
Name=Five Hundred
Description=This counter always returns 500.
Query=SELECT 500 FROM DUAL
IsRate=0
4. 在[Custom#]行,将计数器顺序中的下一个数字分配给新的自定义计数器。
注意:自定义计数器必须是以数字0开始的联系顺序。
5.在Name行,输入新计数器的名称(可以输入中文)。
6. 在Description行,输入对该计数器的描述或解释(可以输入中文)。
7. 在Query行,输入恰好返回数据库一行的SQL查询的文本,该行必须包含一列数值。
注意:自定义查询文本不能够超过512字符。
8. 在IsRate行,如果希望数据库将计数器报告为一个绝对值,请输入0;如果希望数
据库报告每单位时间计数器的更改,请输入1。
注意:自定义查询无法返回负值。
例:
[Custom0]
;Name must be unique
Name=库快存命中率
Description=该计数器返回当前库快存命中率
Query=SELECT 100*((sum(pins-reloads))/sum(pins)) from v$librarycache
IsRate=0
2、配置文件示例对象
安装路径的Mercury LoadRunner\dat\monitors找到vmon.cfg文件:
V$ Monitor]
Counters=150
CustomCounters=12
;How many seconds for each data sample?
SamplingRate=10
[Custom0]
;Name must be unique
Name=库快存命中率
Description=该计数器返回当前库快存命中率
Query=SELECT 100*((sum(pins-reloads))/sum(pins)) from v$librarycache
IsRate=0
[Custom1]
;Name must be unique
Name=高速缓存区命中率
Description=oracle database shoot straight
Query=SELECT round(1-SUM(PHYSICAL_READS)/(SUM(DB_BLOCK_GETS) + SUM(CONSISTENT_GETS)), 4) * 100 FROM (SELECT CASE WHEN NAME='physical reads' THEN VALUE END PHYSICAL_READS,CASE WHEN NAME = 'db block gets' THEN VALUE END DB_BLOCK_GETS,CASE WHEN NAME = 'consistent gets' THEN VALUE END CONSISTENT_GETS FROM V$SYSSTAT WHERE Name IN ('physical reads','db block gets','consistent gets'))
IsRate=0
[Custom2]
;Name must be unique
Name=共享区库缓存区命中率
Description=命中率应大于0.99
Query=Select round(sum(pins-reloads)/sum(pins) * 100, 2) from v$librarycache
IsRate=0
[Custom3]
;Name must be unique
Name=共享区字典缓存区命中率
Description=命中率应大于0.85
Query=Select round(sum(gets-getmisses-usage-fixed)/sum(gets) * 100, 2) from v$rowcache
IsRate=0
[Custom4]
;Name must be unique
Name=检测回滚段的争用
Description=应该小于1%
Query=select round(sum(waits)/sum(gets) * 100, 2) from v$rollstat
IsRate=0
[Custom5]
;Name must be unique
Name=检测回滚段收缩次数
Description=应该小于1%
Query=select sum(shrinks) from v$rollstat, v$rollname where v$rollstat.usn = v$rollname.usn
IsRate=0
[Custom6]
;Name must be unique
Name=监控表空间的I/O读总数
Description=监控表空间的I/O
Query=select sum(f.phyrds) pyr from v$filestat f, dba_data_files df where f.file# = df.file_id
IsRate=0
[Custom7]
;Name must be unique
Name=监控表空间的I/O块读总数
Description=监控表空间的I/O
Query=select sum(f.phyblkrd) pbr from v$filestat f, dba_data_files df where f.file# = df.file_id
IsRate=0
[Custom8]
;Name must be unique
Name=监控表空间的I/O写总数
Description=监控表空间的I/O
Query=select sum(f.phywrts) pyw from v$filestat f, dba_data_files df where f.file# = df.file_id
IsRate=0
.
.
.
.
.
(以上为12个自定义的计数器,以下为LR工具自带的计数器)
[0]
Name=CPU used by this session
Description=This is the amount of CPU time (in 10s of milliseconds) used by a session between when a user call started and ended. Some user calls can complete within 10 milliseconds and as a result, the start and end user-call time can be the same. In this case, 0 milliseconds are added to the statistic. A similar problem can exist in the reporting by the operating system, especially on systems that suffer from many context switches.
IsRate=0
[1]
Name=CPU used when call started
Description=The CPU time used when the call is started.
IsRate=0
二、常用自定义计数器列表
1、 数据高速缓存区命中率
SELECT round(1-SUM(PHYSICAL_READS)/(SUM(DB_BLOCK_GETS) + SUM(CONSISTENT_GETS)), 4) * 100 FROM (SELECT CASE WHEN NAME='physical reads' THEN VALUE END PHYSICAL_READS,CASE WHEN NAME = 'db block gets' THEN VALUE END DB_BLOCK_GETS,CASE WHEN NAME = 'consistent gets' THEN VALUE END CONSISTENT_GETS FROM V$SYSSTAT WHERE Name IN ('physical reads','db block gets','consistent gets')) (监控 SGA 的命中率)命中率应大于0.90最好
2、 库快存命中率
SELECT 100*((sum(pins-reloads))/sum(pins)) from v$librarycache
该计数器返回当前库快存命中率
3 、 共享区库缓存区命中率
Select round(sum(pins-reloads)/sum(pins) * 100, 2) from v$librarycache
(监控 SGA 中共享缓存区的命中率)命中率应大于0.99
4、 监控 SGA 中字典缓冲区的命中率
Select round(sum(gets-getmisses-usage-fixed)/sum(gets) * 100, 2) from v$rowcache
(共享区字典缓存区命中率)命中率应大于0.85
5、 检测回滚段的争用
select round(sum(waits)/sum(gets) * 100, 2) from v$rollstat 小于1%
6、 检测回滚段收缩次数
select sum(shrinks) from v$rollstat, v$rollname where v$rollstat.usn = v$rollname.usn
7、 监控表空间的 I/O读总数
select sum(f.phyrds) pyr from v$filestat f, dba_data_files df where f.file# = df.file_id
监控表空间的 I/O
8、 监控表空间的 I/O块读总数
select sum(f.phyblkrd) pbr from v$filestat f, dba_data_files df where f.file# = df.file_id
监控表空间的 I/O
9、 监控表空间的 I/O写总数
select sum(f.phywrts) pyw from v$filestat f, dba_data_files df where f.file# = df.file_id
监控表空间的 I/O
10、 监控表空间的 I/O块写总数
select sum(f.phyblkwrt) pbw from v$filestat f, dba_data_files df where f.file# = df.file_id
监控表空间的 I/O11、 监控 SGA 中重做日志缓存区的命中率
SELECT Decode(immediate_gets+immediate_misses,0,0,immediate_misses/(immediate_gets+immediate_misses)*100) ratio2 FROM v$latch WHERE name IN ('redo copy')
应该小于1%
12、 监控内存和硬盘的排序比率
select round(sum(case when name='sorts (disk)' then value else 0 end) / sum(case when name='sorts (memory)' then value else 0 end)*100,2) from (SELECT name, value FROM v$sysstatWHERE name IN ('sorts (memory)', 'sorts (disk)'))
最好使它小于 10%
13、ORACLE常用自定义计数器列表
以下是一些常用的ORACLE自定义计数器列表,包含字段:序号、监控名称、SQL算法和说明。
序号 | 监控名称 | SQL算法 | 说明 |
---|---|---|---|
1 | Buffer Cache Hit Ratio | (1 - (physical_reads / (db_block_gets + consistent_gets))) * 100 | 表示缓冲区高速缓存命中率,用于评估数据库的性能。 |
2 | CPU Usage | (1 - (value1 / (value1 + value2))) * 100 | 表示CPU的使用率,用于评估系统的负载情况。 |
3 | Disk Sorts Ratio | (disk sorts / (memory sorts + disk sorts)) * 100 | 表示磁盘排序比率,用于评估系统是否频繁进行磁盘排序操作。 |
4 | Library Cache Hit Ratio | (1 - (pins / (pins + reloads))) * 100 | 表示库缓存高速缓存命中率,用于评估SQL语句的共享情况。 |
5 | Log Buffer Space | ((value1 - value2) / value3) * 100 | 表示日志缓冲区的使用情况,用于评估日志写入的效率。 |
6 | PGA Memory Usage | (value1 / value2) * 100 | 表示PGA内存的使用率,用于评估排序、哈希等操作的内存消耗情况。 |
7 | Redo Log Space Requests | (value1 / value2) * 100 | 表示重做日志空间请求的比率,用于评估重做日志的使用情况。 |
8 | Shared Pool Free Memory | (value1 / value2) * 100 | 表示共享池的空闲内存比率,用于评估共享SQL和PL/SQL代码的缓存情况。 |
9 | Table Lock Contention | (value1 / value2) * 100 | 表示表级锁争用的比率,用于评估表级锁的使用情况。 |
10 | User Sessions | value1 | 表示当前活动的用户会话数量,用于评估数据库的并发连接数。 |
请注意,这只是一些常见的ORACLE自定义计数器,具体选择和定制计数器应根据实际需求和环境来决定。
三、LR中监控ORACLE数据库常用计数器遇到问题及处理
当在LR中监控Oracle数据库时,常用的计数器包括:
- Oracle Active Sessions:显示正在执行的活动会话数。
- Oracle Database Time:显示连接到Oracle数据库的总时间。
- Oracle Transactions/sec:显示每秒钟处理的事务数。
- Oracle CPU Time:显示Oracle数据库使用的总CPU时间。
- Oracle Wait Time:显示等待数据库处理的总时间。
如果遇到监控Oracle数据库的计数器无法显示数据或显示错误,可以考虑以下处理方法:
-
检查数据库连接:确保LR能够成功连接到Oracle数据库。可以尝试重新连接或重启LR来排除可能的连接问题。
-
检查LR版本:确认LR版本是否支持所需的Oracle计数器。如果LR版本过旧,则可能不支持最新版本的Oracle数据库。
-
检查权限:确保LR用户具有足够的权限来读取Oracle数据库的计数器。可以尝试使用具有更高权限的用户重新连接数据库。
-
检查数据库配置:确认Oracle数据库是否正确配置以允许LR监控计数器。可能需要更新数据库配置文件或更改数据库参数。
-
检查网络连接:确保LR能够与Oracle数据库进行通信。可以尝试使用其他工具测试网络连接是否正常。
总的来说,当在LR中监控Oracle数据库时,遇到问题时需要逐一排查问题的原因并采取相应的处理方法。