Oracle 10g AWR Report 分析(轉)

逍遙三人發表於2012-02-13

Oracle 10g 提供了一個新的效能採集和分析工具awr(automaticworkload repository)。

Awr存在於sysaux表空間,是sysaux的主要佔用者之一。

快照,在特定時間捕獲的一組效能統計資訊,用於計算統計資訊的更改率。每個快照由snap_id進行標識。

預設快照每60分鐘生成一次。保留7天。


Awr快照集,一種用於標記和保留重要時段快照集資料的機制。一個快照集定義一對快照(兩個快照)。快照集用於保留快照資料。在刪除快照集之前,屬於快照集的快照會一直存在。

一般情況下,可以將具有代表性的時段設定為快照集,以便用於與當前系統行為進行比較。

Awr compare periods 用於比較awr中兩個時段。Awr顯示兩個快照(兩個時間點)之間的awr資料,而awr compare periods 顯示兩個時段即兩個awr report(相當於四個快照)之間的差異。根據兩個時段之間報告的更改,可準確診斷效能降低的原因。

生成awr report,可執行$ORACLE_HOME/rdbms/admin/awrrpt.sql。

Awr快照設定,使用dbms_workload_repository.modify_snapshot_settings()。

生成awr快照集,可使用dbms_workload_repository.create_baseline ()。

生成awr compare periods,可執行$ORACLE_HOME/rdbms/admin/awrddrpt.sql。

Awr report 分析-CPU繁忙程度與CPU使用率


Sessons:採集時例項連線的會話數。

Cursors/Session:每個會話平均開啟的遊標數。

Elapsed:取樣時間。

DB Time:代表了例項的工作負載,在時間模型統計中非常重要。

DB Time表示使用者操作花費的時間,包括cpu時間(非後臺程式花費時間(比如PMON))和等待時間(非空閒等待時間)。

如果DB Time接近於Elapsed Time*cpu數,表明資料庫比較忙,cpu負載也許比較大。這時很有可能是因為資源爭用導致等待事件的結果,可以去top 5等待事件分析原因。

可以在Time Model Statistics部分獲取DB Time的值與DB CPU的值。DB CPU 指使用者操作的總的CPU時間,同樣不包括後臺程式花費的CPU時間(比如PMON)。那麼DB Time去除掉DB CPU是不是就應該是等待時間?應該是,於是公式DB Time=DB CPU + 等待時間。


V$SESS_TIME_MODEL

http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2087.htm#REFRN30340

看一下系統統計部分:


從這部分資訊可以看出我們系統的CPU情況與記憶體等資訊。

SYS_TIME與USER_TIME之和 1776 +4834 = 6610 正好等於BUSY_TIME,再者(6610 + 719387)/100/60/2 = 60.49975 ,這不是我們的取樣時間嗎?2代表兩個cpu(NUM_CPUS)。上面提到DB CPU不包括後臺程式花費的時間(比如PMON),而在Time Model Statistics中顯示出了後臺程式CPU時間(backgroundcpu time)。所以資料庫的整體 cpu 使用情況可以這樣計算吧,cpu使用率 = ( DB CPU + background cpu time ) / (Elapsed *NUM_CPUS) * 100% = ( 19.45 + 7.08 ) / ( 60.45mins * 2 )* 100% = 0.00366 % 。看來我們的系統很閒呀,我應該在系統稍微忙點的時候取一份report來分析。

V$OSSTAT

http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/dynviews_2010.htm#REFRN30321

Awr report 分析-IO stats

效能指標說明:

Reads: 發生了多少次物理讀。

Av Reads/s : 每秒鐘物理讀的次數。


Av Rd(ms): 平均一次物理讀的時間(毫秒),有一種說法是如果這個值大於7說明系統有嚴重的I/O問題,也有人說這個值不應該超過30,否則IO也可能有問題。硬體不同對IO瓶頸的判斷也會相應的改變。

Av Blks/Rd:每次讀多少個資料塊。

Writes:發生了多少次寫。

Av writes/s:每秒寫的次數。

Buffer Waits:獲取記憶體資料塊等待的次數。

Av Buf Wt(ms):獲取記憶體資料塊平均等待時間。

V$FILESTAT

http://docs.oracle.com/cd/B19306_01/server.102/b14237/dynviews_1107.htm#REFRN30087


IOPS (Input/Output Operations Per Second),即每秒進行讀寫(I/O)操作的次數。

MBPS也就是頻寬,每秒傳輸的位元(資料量),一個位元組8位元(bit)。比如:4Mbps=每秒鐘傳輸4M位元。

IOPS計算:

IOPS = Av Reads/s + Av Writes/s

MBPS計算:

MBPS=(Physical reads +Physical writes)* block_size =(0.12 + 0.28 )*塊大小

MBPS的的指標在 Load Profile 或 Instance ActivityStatistics 部分分別對應Physical reads 與Physical writes 或 physical writes 與 physicalreads。


相關描述說明:

Statistics Descriptions

http://docs.oracle.com/cd/B19306_01/server.102/b14237/stats002.htm#i375475


同樣一個系統,我們可以設定一個基線作為依據,也可以判斷出IO效能是否出現了問題,比如,在系統執行效能良好的時候做一個基線,當系統IO效能很差時,我們可以取一份report,然後對比兩個report的效能指標,這樣就可以準確診斷當前IO對效能的影響。

Awr report 分析-oracle 記憶體元件大小


在awr report中顯示了oracle對各個記憶體元件大小的效能估算,包括Buffer Pool Advisory,PGA Memory Advisory,Shared Pool Advisory,SGATarget Advisory。

先看一下Report Summary裡這方面的資訊:

指標說明:

Memory Usage %:表示共享池記憶體使用率,應保持在75到90之間,如果太小說明分配的共享池過大,如果>90說明共享池中有爭用,共享池記憶體不足。

% SQL with executions>1:執行次數大於1的SQL語句的比率,太小的話要結合Parse,看看是不是有硬編碼現象,避免過多的sql硬解析。

% Memory for SQL w/exec>1:執行次數大於1的SQL語句所消耗的記憶體,佔所有SQL語句消耗記憶體的比率。


指標說明:

Size for Est (M):oracle 估算buffer pool的大小。

Size Factor:估算值與實際值的一個比例,比如0.9,代表估算值是實際值大小的90%,1.0代表buffer pool的實際大小。

Buffers for Estimate:估算的buffer pool的大小(數量)。

Est Phys Read Factor:估算的物理讀的影響因子,是估算物理讀和實際物理讀的一個比例,1.0代表實際的物理讀。

Estimated Physical Reads:估算的物理讀的次數。

可以看出系統的實際bufferpool的大小是380M(Size Factor=1.0)。我們應該找到SizeFactor的改變對物理讀影響最大的點,即Size Factor=0.66的點。從Size Factor=0.57的物理讀次數391999降到Size Factor=0.66的物理讀次數414222,以後物理讀的變化很小,或基本沒有變化。即buffer pool為252M時,效率是最高的。

指標說明:

PGA Target Est (MB):估算PGA 的大小。

Size Factr:影響因子。

W/A MB Processed:oracle為了產生估算處理的資料量。

Estd Extra W/A MB Read/ Written to Disk:處理資料中需要物理讀寫的資料量。

Estd PGA Cache Hit %:估算的PAG命中率。

Estd PGA Overalloc Count:需要在估算的PGA大小下額外分配記憶體的次數。

這份資料沒有任何代表性!這裡需要掌握兩個點:1)oracle估算的PGA大小不會導致額外分配記憶體的點。2)物理讀寫值(Estd Extra W/A MB Read/ Written to Disk)不再增加的點。不過還要考慮當前記憶體是否充足。

指標說明:

Shared Pool Size(M):估算的共享池大小。

SP Size Factr:影響因子。

Est LC Size (M) :估算的庫快取記憶體佔用的大小。

Est LC Mem Obj:快取記憶體中的物件數。

Est LC Time Saved (s) :需要額外將物件讀入共享池的時間。

Est LC Time Saved Factr:額外將物件讀入共享池的時間影響因子。

Est LC Load Time (s) :分析所花費的時間。

Est LC Load Time Factr:分析花費事件的影響因子。

Est LC Mem Obj Hits:記憶體中物件被發現的次數。

這裡主要看Est LC Time Saved Factr這一列,它表示將物件讀入共享池的影響情況,當這個值變化很小或不變的時候,增加shared pool的值就沒有太大意義了。這樣看來,這裡應該將shared pool 設定為80M。共享池設定大了,這正好驗證了Shared Pool Statistics中Memory Usage %列說明。


指標說明:

SGA Target Size (M):估算的SGA大小。

SGA Size Factor:影響因子。

Est DB Time (s):估算的SGA大小計算出的DB TIME。

Est Physical Reads:估算的物理讀次數。

同樣找到影響最大的點,即Size Factor=0.75的點。

Awr report 分析-其它

OLTP系統中必須關注的兩個效能指標是LibraryHit與Buffer Hit。Library Hit指共享池中sql解析的命中率; Buffer Hit指記憶體資料塊命中率。

關於這兩項效能指標可以檢視:

oracle SharedPool優化思路http://www.linuxidc.com/Linux/2011-07/38912.htm


oracle Buffer Cache優化思路http://www.linuxidc.com/Linux/2011-11/48052.htm

SQL ordered by Elapsed Time

image


這部分以sql消耗時間降序排列。

指標說明:

Elapsed Time (s):該條sql消耗的總時間。

CPU Time (s):該條sql花費的總cpu時間。

Executions:該條sql執行次數。

Elap per Exec (s):該條sql執行一次消耗的平均時間。

% Total DB Time:該條sql消耗總時間(ElapsedTime)佔資料庫時間(DB Time)的百分比。

SQL ordered by CPU Time

% Total DB Time is the Elapsed Time of theSQL statement divided into the Total Database Time multiplied by 100

這部分以sql消耗的cpu時間降序排列。

指標說明:略

SQL ordered by Gets

image


這部分以sql獲取記憶體資料塊的數量降序排列。

指標說明:

Buffer Gets:sql獲取記憶體資料塊總數量。

Executions:sql執行次數。

Gets per Exec:sql執行一次獲取記憶體資料塊數量。

%Total:佔記憶體資料塊的百分比。

CPU Time (s) :sql花費的總cpu時間。

Elapsed Time (s):sql消耗的總時間。

SQL ordered by Reads

這部分以sql物理讀降序排列。

SQL ordered by Executions

這部分列出sql執行次數資訊。

指標說明:

Rows Processed:sql處理的總記錄數。

Rows per Exec CPU per Exec (s):sql每次執行處理的記錄數。

OLTP可以關注,OLAP無須關注(因為sql重複執行的頻率很低)。

SQL ordered by Parse Calls

這部分列出sql被分析次數(不區分硬分析與軟分析)的資訊。

指標說明:

Parse Calls:sql分析的次數。

% Total Parses:佔總分析次數的百分比。

SQL ordered by Sharable Memory

這部分列出sql佔用library cache大小的資訊。

指標說明:

Sharable Mem (b):佔用librarycache的大小。

SQL ordered by Version Count

這部分列出sql版本數資訊。

指標說明:

Version Count:sql版本數。

OLTP可以關注。

SQL ordered by Cluster Wait Time

這部分列出叢集等待時間資訊。

指標說明:

Cluster Wait Time(s):叢集等待時長。

CWT% of Elapsd Time:叢集操作等待時長佔總時長(ElapsdTime(s))的百分比。

本篇文章來源於 Linux公社網站(www.linuxidc.com) 原文連結:http://www.linuxidc.com/Linux/2011-11/48053p4.htm

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21584437/viewspace-716171/,如需轉載,請註明出處,否則將追究法律責任。

相關文章