awr是指“自動工作量資料檔案庫”,是oracle數(shù)據(jù)庫用于收集、管理和維護數(shù)據(jù)庫整個運行期間和性能相關統(tǒng)計數(shù)據(jù)的存儲倉庫,是Oracle數(shù)據(jù)庫性能調整和優(yōu)化的基礎。awr收集到的數(shù)據(jù)會被定期保存到磁盤,可以從數(shù)據(jù)字典查詢以及生成性能報告。
本教程操作環(huán)境:Windows7系統(tǒng)、Oracle 11g版、Dell G3電腦。
在對Oracle數(shù)據(jù)庫做性能優(yōu)化和調整的時候,整個數(shù)據(jù)庫在運行期間的現(xiàn)狀或者說真實狀態(tài)只有在被完整記錄下來,才是可查,可知,可比較,可推測或者說為未來優(yōu)化調整提供支撐建議的基礎。那在Oracle數(shù)據(jù)庫中這個機制是由AWR來實現(xiàn)的。
AWR是Oracle數(shù)據(jù)庫用于收集,管理和維護數(shù)據(jù)庫整個運行期間和性能相關統(tǒng)計數(shù)據(jù)的存儲倉庫,是Oracle數(shù)據(jù)庫性能調整和優(yōu)化的基礎。
1. 什么是AWR
AWR是Automatic Workload Repository的簡稱,中文叫著自動工作量資料檔案庫。既然是倉庫,又是保存負載數(shù)據(jù),所以保存的是數(shù)據(jù)庫性能相關的數(shù)據(jù)。即特定數(shù)據(jù)庫或者實例在過去運行期間整個性能表現(xiàn)。AWR能實現(xiàn)性能數(shù)據(jù)的收集,處理,維護,以及給出調整參考等。這些收集到的數(shù)據(jù)被定期保存到磁盤,可以從數(shù)據(jù)字典查詢以及生成性能報告等。
2. AWR統(tǒng)計信息收集處理的內容
??用于確定數(shù)據(jù)庫段的訪問和使用的對象統(tǒng)計信息
??基于活動時間模型的統(tǒng)計,位于v$sys_time_model和v$sess_time_model視圖
??系統(tǒng)和會話級別統(tǒng)計信息收集,位于v$sesstat和v$systat視圖
??基于耗用時間和CPU時間等高負載的sql語句
??ASH統(tǒng)計信息,代表了最近的活動會話的歷史
3. AWR涉及的2個重要參數(shù)
- statistics_level
??BASIC:
????僅提供最基本的性能數(shù)據(jù)收集功能,許多性能基線所需的統(tǒng)計數(shù)據(jù)未被收集。Oracle不建議使用該值。
??TYPICAL:
????這是默認值。段統(tǒng)計,時間統(tǒng)計,以及所有建議類統(tǒng)計數(shù)據(jù)被收集。
??ALL:
????收集所有typical級別數(shù)據(jù)、操作系統(tǒng)時間統(tǒng)計和行源執(zhí)行統(tǒng)計信息等。多用于調試模式,生產(chǎn)環(huán)境不建議使用。
- timed_statistics
????指定時間相關的統(tǒng)計信息是否收集。當statistics_level為TYPICAL 或者ALL時,該值被設置為true,否則,設置為false。建議檢查該參數(shù),并設置為true。
4.快照和基線
- 快照
??AWR快照就是將收集到的性能數(shù)據(jù)以一定的頻率持久化到磁盤。這個持久化的作用主要是用于后續(xù)進行分析或比對,同時這些性能數(shù)據(jù)也提供給ADDM進行性能診斷并輸出診斷結果。即:AWR每小時對v$active_session_history進行采樣一次,并將信息保存到磁盤中,并且保留8天(11g缺省值),8天后舊的記錄才會被覆蓋。這些采樣信息被保存在視圖wrh$_active_session_history中。而這個采樣頻率(1小時)和保留時間(8天)可以根據(jù)實際情況進行調整。
- 基線
??有數(shù)據(jù),能比對,才能夠真正反映問題的實質。那么在Oracle數(shù)據(jù)庫里邊,我們可以將其業(yè)務負載高峰期的活動會話歷史數(shù)據(jù),更確切的說是AWR持久化的數(shù)據(jù)貼個標簽,這個標簽就是所謂的基線。因此基線就是某個特定時段業(yè)務高峰期數(shù)據(jù)庫整體性能的一個基準報告,一旦當后續(xù)數(shù)據(jù)庫出現(xiàn)性能問題或運行不佳的時候,通過使用基線,與性能問題期間的性能統(tǒng)計數(shù)據(jù)進行比對,得出兩者的差異報告,有助于問題的定位與解決。
??由于基線依賴于AWR快照,因此,當我們設定基線之后,相應的AWR快照數(shù)據(jù)被保留。為了避免磁盤空間的占用,我們對于基線也可以設置相應的保留期,一旦保留期限到達,意味著基線失效,以及相應的AWR快照數(shù)據(jù)也會被自動刪除。基于基線保留策略,基線有幾種不同的形式,如下:
????固定基線(Fixed Baselines)
??????固定基線也就是選擇特定的時間周期(可以按照snap_id或者直接指定時間),為其創(chuàng)建基線,用于后續(xù)進行AWR報告比對輸出結果。
????移動窗口基線(Moving Window Baseline)
??????Oracle 數(shù)據(jù)庫自動維護系統(tǒng)定義的移動窗口基線。系統(tǒng)定義的移動窗口基線的默認窗口大小為當前的 AWR 保留期,默認為八天。如果計劃使用自適應閾值,則可考慮使用更大的移動窗口(如 30 天),以便準確計算閾值??赏ㄟ^將該移動窗口中的天數(shù)更改為等于或小于 AWR 保留期中的天數(shù),來重新調整移動窗口基線的大小。因此,如果要增大移動窗口,首先需要相應增大 AWR 保留期。AWR 保留期和系統(tǒng)定義的移動窗口基線的窗口大小為兩個獨立的參數(shù)。AWR 保留期必須大于或等于系統(tǒng)定義的移動窗口基線的窗口大小。
系統(tǒng)定義的基線為 OEM 性能屏幕提供了默認的基線,以便將其性能與當前數(shù)據(jù)庫性能比較。
注:在 Oracle database 11g 中,快照數(shù)據(jù)的默認保留期已從七天更改為八天,以確保捕獲整個星期的性能數(shù)據(jù)。
????基線模板(Baseline Templates)
??????可以使用基線模板為將來的時間段創(chuàng)建基線。有兩種類型的基線模板:單一和重復。
可以使用單個基線模板為將來的單個連續(xù)時間段創(chuàng)建基線。如果你事先知道你打算在將來捕獲的某個時間段,這種方法是有用的。例如,你可能想要捕獲AWR數(shù)據(jù)的系統(tǒng)測試,預計在即將到來的周末。在這種情況下,可以創(chuàng)建一個單獨的基線模板以自動捕獲測試發(fā)生時的時間段。
??????可以使用重復基線模板創(chuàng)建和刪除基于重復時間計劃的基線。這是有用的,如果你希望Oracle數(shù)據(jù)庫自動捕獲一個連續(xù)的時間段為其創(chuàng)建基線。例如,你可能想要捕獲AWR數(shù)據(jù)為一個月每星期一上午。在這種情況下,您可以創(chuàng)建一個重復基線模板,以便在每個星期一的重復日程中自動創(chuàng)建基線,并在指定的到期時間間隔(如1個月)后自動刪除舊的基線。
- 自適應閾值(Adaptive Thresholds)
??自適應閾值可以幫你以最低的開銷監(jiān)控和檢測出性能問題。自適應閾值能夠從在移動窗口基線捕獲到的度量值里得到的統(tǒng)計信息中,為系統(tǒng)度量自動設置警告和關鍵報警(warning and critical alert)的閾值。這些統(tǒng)計信息每周會重新生成,并可能由于系統(tǒng)性能隨著時間變化改變,而產(chǎn)生新的閾值。
??比如,很多數(shù)據(jù)庫白天是一個OLTP系統(tǒng),而到晚上需要執(zhí)行一些批量進程(例如生成報表)。每個事務響應時間的性能度量對檢測OLTP的性能退化問題在白天可能很有用,但是這個閾值常常對于批量工作來說會太低,而頻繁觸發(fā)報警。自適應閾值能檢測到這樣的工作量模式,并自動為白天和夜里設置不同的閾值。
??自適應閾值的類型有兩種:
??最大值的百分比:該閾值被計算為在移動窗口基線中觀察到的數(shù)據(jù)的最大值的百分比的倍數(shù)。
??重要性級別:閾值被設為一個統(tǒng)計學中的百分位來觀察基于移動窗口基線數(shù)據(jù)的閾值以上的值,來體現(xiàn)異常程度。百分位能指定為以下幾種:高(0.95),100個中只有5個能超過這個值;非常高(0.99):100個中只有1個能超過這個值;嚴重的(0.999):1000個鐘只有1個能超過這個值;極端的(0.9999):10000個鐘只有1個能超過這個值。
??當一個系統(tǒng)以高峰期工作量來設計的,并且你希望在當前工作量接近或超過先前的高值時觸發(fā)報警,最大值百分比閾值將非常有用。例如,每秒產(chǎn)生redo量的度量就是個典型的例子。
??重要性級別閾值在以下情況很有用:當系統(tǒng)運行正常時表現(xiàn)得很穩(wěn)定,但當性能變差時可能會在一個大范圍內波動。例如,每個事務的響應時間的度量在一個優(yōu)化過的OLTP系統(tǒng)上將表現(xiàn)平穩(wěn),但當性能問題凸顯時,可能會波動很大。采用重要性級別閾值,當環(huán)境產(chǎn)生不正常的度量值和系統(tǒng)性能時觸發(fā)報警。
?? Author : Leshami
?? Blog : http://blog.csdn.net/leshami
- 空間消耗(Space Consumption)
??以下因素可以被用來判斷AWR的空間消耗:
????在任一給定時間系統(tǒng)中的活動會話數(shù);
????快照時間間隔,時間間隔越小,快照產(chǎn)生越頻繁,增加AWR采集的數(shù)據(jù)的占用空間;
????歷史數(shù)據(jù)保留時間
??默認情況下,快照每小時捕獲一次,并在數(shù)據(jù)庫中保存8天。使用這些默認設置,一個典型的并發(fā)量為10個會話數(shù)的系統(tǒng)大約需要200-300M的空間來存放AWR數(shù)據(jù)。但是在降低保留時間的時間,請注意,若AWR中的數(shù)據(jù)不足,可能會影響一些組件和功能的準確性和精確度:ADDM、SQL Tuning Advisor、Undo Advisor、Segment Advisor。
??可能的話,Oracle建議將AWR保留時間設得足夠大,至少能捕獲一個完整的工作量周期。當你的系統(tǒng)工作量周期為1周,比如工作日是OLTP的工作負荷,而在周末運行批量工作,則默認的8天保留時間不需要去修改。當如果你的系統(tǒng)的高峰期在每個月的月末,那么你可能需要將這個保留時間更改到1個月。
??例外情況下,你可以將快照時間間隔改成0來關閉自動收集快照。在這種情況下,工作量和統(tǒng)計數(shù)據(jù)的自動收集將被停止,且許多Oracle數(shù)據(jù)庫的自動管理功能將不能使用。另外,你不能手動創(chuàng)建快照,因此Oracle強烈建議不要關閉snapshot的自動收集。
5. AWR結構圖
推薦教程:《Oracle教程》