LoadRunner 中配置監控Oracle

Oracle 是目前世界上大型應用系統廣泛使用的數據庫,Oracle 數據庫產品為財富排行榜上的前1000 家公司所採用,許多大型網站也選用了Oracle 系統。Oracle 內部結構比較複雜,如圖8.1 所示,出現性能問題的可能性是比較大的。因此在性能測試過程中,應該密切關注Oracle的性能表現,收集和監控Oracle 性能數據。

要通過LoadRunner 監控Oracle,首先必須在Controller 所在的機器上安裝Oracle 客戶端,然後配置好服務名,用sqlplus 確認可以連接Oracle,之後就可以在Controller 中配置Oracle 連接,配置的方法如下。

(1)打開Controller,選擇監控圖中的“Database Server Resource Graphs - Oracle”,如圖8.2 所示。

(2)添加監控,監控引擎選擇“LoadRunner native monitors”單選按鈕,如圖8.3 所示。

(3)然後添加需要監控的Oracle 所在的服務器IP 地址,如圖8.4 所示。

(4)輸入Oracle 服務器的登錄賬號,如圖8.5 所示。

(5)選擇需要監控的Oracle 計數器,如圖8.6 所示。

添加完監控IP 後如圖8.7 所示。

確定之後即可在Controller 的監控圖表中看到收集的Oracle 性能數據,如圖8.8 所示。

(6)修改Oracle 監控數據的收集頻率。

LoadRunner 默認間隔10 秒收集一個Oracle 性能數據,數據取樣的間隔太短會對Oracle 數據庫性能造成一定的影響,如果想調整收集頻率,可打開LoadRunner 安裝目錄中的dat\monitors\vmon.cfg 文件,修改其中的sample rate。

需要注意的是LoadRunner 限制監控Oracle 收集性能數據的最小間隔是10 秒,如果設置低於這個值,會按10 秒間隔來收集。

(7)添加自定義計數器。

LoadRunner 在vmon.cfg 文件中設置了可收集的Oracle 性能計數器,如果希望自己定義收集的性能數據,可修改此文件,添加相應的SQL 語句來定義計數器。

例如,可在LoadRunner 安裝路徑的\dat\monitors 找到vmon.cfg 文件並修改如下:

[V$ Monitor]

Counters=150

CustomCounters=9

;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