Oracle效能優化使用度量和預警

wuweilong發表於2020-07-02

度量、預警及基線
對效能進行監視時,需要使用一些統計資訊之外的特定資訊。為了確定特定統計資訊是否重要,則需要了解經過一段特定時間之後,該統計資訊的變化量。為了具有前瞻性,則需要在存在特定條件時(例如系統響應時間達到了允許的最大值)收到通知。為了診斷效能問題,需要了解更改的具體內容。度量、預警及基線即可提供這些資訊。  
度量是累積統計資訊在一段時間內的更改率。例如,每秒的物理讀取數。  
可為各種度量設定閾值,當度量的值超過閾值時,就會生成預警。  
基線包含所儲存的度量集和統計資訊集。單個集稱為快照。基線由兩個或多個快照組成。通常,基線是在正常或可接受的操作期間捕獲的,但也可以捕獲任何相關時段。如果效能不正常,則可捕獲其它度量集,並將其與基線進行比較。通過此方法,資料可明確地指出效能問題。


基本統計資訊的限制
統計資訊是對資料庫中所發生事件的計數。統計資訊和等待事件為原始資料。基本統計資訊始終只是給定時間對應的一個值。  
如果繪製很長一段時間內的基本統計數值,則會看到這些值一直隨時間增長。該幻燈片顯示了一個可能的圖形示例,即從 V$SYSSTAT 效能檢視中提取的 physical reads 統計資訊圖。如幻燈片中所示,雖然兩個圖的統計數值相同,但在觀測期的末尾,趨勢是完全不同的。可以非常清楚地看到,上圖中資料庫的 I/O 變化率遠遠大於下圖中的 I/O 變化率。所以,僅檢視統計數值是沒有意義的。
為了更好地瞭解資料庫行為,您不僅要檢視數值,還要觀察這些曲線或趨勢。因此,需要計算某一時間段中的統計數值變化率,以便確定該時段內的趨勢。  



典型增量工具
基本統計資訊只是自啟動例項以來累積的原始數字。快照是在某一個時間點上捕獲的一組統計資訊。通過在不同的時間獲取快照並獲得值之間的差值,可獲取有意義的統計數值。該差值即為增量。有幾種工具可生成增量。Statspack、自動工作量資料檔案庫 (AWR) 和自定義指令碼可生成兩個快照的增量報表。
通過 AWR 和 Statspack 可儲存快照集以供將來參考。這些儲存的集就是統計資訊基線。  


Oracle Database 11g 解決方案:度量
Oracle 資料庫伺服器在正常操作期間收集基本統計資訊。基本統計資訊即為簡單的計數。例如,對自啟動以來系統中物理讀取數的計數結果即為基本統計資訊。  
度量是源自基本統計資訊的二級統計資訊。大多數度量會跟蹤 Oracle 伺服器中活動的更改率。例如,系統中前 60 分鐘內的平均物理讀取數即為一個度量。內部元件(客戶機)使用度量來監視系統執行狀況,檢測問題和進行自優化。易管理性監視程式程式 (MMON) 會根據相應的基本統計資訊定期更新度量資料。
Oracle 資料庫伺服器元件使用度量來執行易管理性功能。例如,自動資料庫診斷監視程式 (ADDM) 將系統中最後 60 分鐘內的平均物理讀取數用作輸入。其它元件可能需要基於相同基本統計資訊(物理讀取數)的不同度量。例如,記憶體指導可能需要高峰時段的物理讀取計數。Oracle Database 11g 支援系統、會話、檔案和等待事件統計資訊的度量。每個度量由一個度量編號來唯一地標識,且與一個量度名稱相關聯。該圖列出了一些固定的檢視,可訪問這些檢視來瀏覽度量資料。有關這些檢視的詳細資訊,請參閱《Oracle Database Reference》指南。


度量的優點
保留度量的主要優點在於,在元件需要計算某些活動的更改率時,可隨時使用相應的資料。
在早期版本中,要計算特定基本統計資訊的更改率,則必須在執行工作量之前和之後捕獲統計資訊。使用度量,所需執行的全部操作就是執行工作量並選擇相應的度量。
有了伺服器收集的度量,伺服器元件便具備了自優化和健康檢查的基礎。度量提供了自動記憶體管理和自動資料庫診斷監視程式所需的效能資訊。




檢視度量歷史記錄資訊  
在某些 V$ 檢視中顯示了度量值,其中的這些值是非常小的時間間隔內的平均值。這些間隔可能會變化(從 15 秒到 10 分鐘),這取決於度量的類別。V$ 檢視中資料的快照將保留在 DBA_HIST 表中。
幻燈片列出了一些度量和 AWR 檢視。  
例如:
V$SYSMETRIC_HISTORY 顯示了資料庫中可用的所有系統度量值。此檢視同時顯示了持續時間較長(60 秒,1 小時歷史記錄)和持續時間較短(15 秒,僅一個間隔)的度量。
DBA_HIST_SESSMETRIC_HISTORY 顯示了幾個重要會話度量的歷史記錄。其包含 V$SYSMETRIC_HISTORY 檢視的樣本(快照)。
有關這些檢視的詳細資訊和列詳細資訊,請參閱《Oracle Database Reference》。


使用 EM 檢視度量詳細資料
使用“All Metrics(所有度量)”頁來檢視可用於資料庫的所有效能度量的列表。可從“Database(資料庫)”主頁上訪問此頁,方法是單擊“Related Links(相關連結)”部分的“All Metrics(所有度量)”連結。
在“All Metrics(所有度量)”頁中,可展開所有或特定度量組來檢視特定度量。通過選中一個度量,即可顯示該度量的頁面。可檢視某一特定時段內的度量值,並且可自定義此檢視。相應的圖形將顯示該度量值的歷史記錄。
要從“Database(資料庫)”主頁上訪問此頁,單擊“Related Links(相關連結)”部分的“All Metrics(所有度量)”。在“All Metrics(所有度量)”頁中,展開“Waits by Wait Class(按等待類等待)”,然後單擊“Database Time Spent Waiting(%)(等待所用的資料庫時間百分比 (%))”。在“Database Time Spent Waiting(%)(等待所用的資料庫時間百分比 (%))”頁上,單擊“Concurrency(併發性)”。


統計資訊直方圖
雖然度量可以使您瞭解特定統計資訊的趨勢,但它無法告知某個特定瓶頸是影響區域性還是影響整個系統。例如,您可能觀察到一個變化率大的度量,但這一突然變大可能只侷限在系統的一個或兩個會話中。在這種情況下,可能就沒必要深入研究該問題了。但是,如果此突發性的增長全面影響到整個系統,則需要做進一步的調查。可通過直方圖效能檢視獲得此資訊。
如幻燈片所示,您可觀察到 I/O 比率有一個突發性的增長。可將此資訊與在 V$FILE_HISTOGRAM 中找到的相應 I/O 直方圖關聯。此檢視顯示基於每個檔案的所有單塊讀取數的直方圖。直方圖中具有時間間隔時段,以毫秒為度量單位,從 1 毫秒到 222 毫秒(69.9 分鐘)。每個時段內的值是系統等待該時間量的次數。例如,從幻燈片可看出,為了從磁碟中讀取資料塊,系統等待了 5,500 次,每次等待時間介於 32 到 64 毫秒之間。如果訪問時間通常小於 10 毫秒,則對系統而言,這肯定是一個需要關注的問題,應當進一步研究此問題。如果在較短的等待時間段內看到較大的次數,則無需過於擔心。
度量可提醒您提前注意潛在的問題。通過使用直方圖進行細查,可明確地確定是否真的存在問題。




直方圖檢視
V$EVENT_HISTOGRAM 顯示基於事件的等待次數的直方圖。
V$FILE_HISTOGRAM 顯示基於每個檔案的所有單塊讀取數的直方圖。  
V$TEMP_HISTOGRAM 顯示基於每個臨時檔案的所有單塊讀取數的直方圖。
直方圖可具有以下時間間隔:< 1 毫秒、< 2 毫秒、< 4 毫秒、< 8 毫秒……< 2^21 毫秒、< 2^22 毫秒、>= 2^22 毫秒。  
還可通過 Enterprise Manager 來檢視該直方圖統計資訊。從“Performance(效能)”頁,單擊“Active Sessions(活動會話)”圖的圖例區域項,如“User I/O(使用者 I/O)”,以進入“Active Sessions Waiting:User I/O(活動會話等待:使用者 I/O)”頁。再次單擊“Active Sessions(活動會話)”圖右側的等待事件名稱,以進入相應的“Histogram for Wait Event(等待事件的直方圖)”頁。幻燈片上顯示了“Histogram for Wait Event:db file sequential read(等待事件的直方圖:DB 檔案連續讀取)”圖。
注:除非 TIMED_STATISTICS 初始化引數已設定為 TRUE(該值為預設值),否則不會填充直方圖。當 STATISTICS_LEVEL 引數設定為 TYPICAL 或 ALL 時,會自動設定 TIMED_STATISTICS。


伺服器生成的預警
預警是當資料庫處於不理想狀態且需要引起注意時發出的通知。預設情況下,Oracle 資料庫會通過顯示預警的 Oracle Enterprise Manager Database Control 傳送預警。也可選擇配置 Oracle Enterprise Manager,以向管理員傳送電子郵件,報告問題狀況。Oracle 資料庫伺服器還會在工作量資料庫中保留度量和預警的歷史記錄。  
預警佇列是永久性的多使用者佇列,可供要編寫自定義預警處理程式的使用者使用。
預設情況下會設定幾個主要度量的閾值,如設定“Tablespace Used (%)(使用的表空間 (%))”的閾值。可為您的系統設定相關度量的閾值。如果資料庫偏離正常讀數且超過了這些閾值,則 Oracle Database 11g 會主動傳送預警來通知您。提前通知潛在的問題,可使您迅速作出響應,並通常在使用者注意到這些問題之前就解決這些問題。
一些可提前提供問題通知的重要度量有:
平均檔案讀取時間(釐秒)
響應時間(每一事務處理)
SQL 響應時間 (%)
等待時間 (%)



資料庫控制使用模型
以下是伺服器生成的預警的基本使用模型:
如果需要,可更改伺服器預警度量的閾值設定。可通過使用資料庫控制或 PL/SQL 過程來實現此操作。
可通過使用資料庫控制來建立通知規則(例如電子郵件地址或封鎖期)。
生成預警後,資料庫控制會在預警頁中顯示該預警。資料庫控制會向已註冊接收通知的管理員傳送通知。
收到預警後,可根據預警中給出的建議更正問題。
注:應確保 STATISTICS_LEVEL 初始化引數設定為 TYPICAL 或 ALL。


設定閾值
要設定或編輯閾值,請在“Database(資料庫)”主頁的“Related Links(相關連結)”區域選擇“Metrics and Policy Settings(度量和策略設定)”。如果要更改閾值,則輸入所需的“Warning Threshold(警告閾值)”和“Critical Threshold(嚴重閾值)”。選擇“All Metrics(所有度量)”檢視,以新增閾值。資料庫達到指定的值時,就會出現相應的預警。單擊“Edit(編輯)”按鈕以指定其它響應操作,或新增閾值到一組預警下的各個物件,如特定表空間上的已用閾值百分比。  
收集排程指定收集的頻率。可更改收集排程,但不可針對各個閾值進行。收集排程是針對度量組而設定的。單擊“Collection schedule(收集排程)”以編輯該排程,或檢視使用該排程而收集的度量。
“Edit(編輯)”按鈕為一個圖示,其形式為一支鉛筆或一組鉛筆。單擊形式為單支鉛筆的“Edit(編輯)”,可更改閾值和該度量的併發性屬性。使用形式為多支鉛筆的“Edit(編輯)”按鈕,可新增閾值到該度量組中的各個物件,比如在各個表空間上新增不同的閾值。


建立和測試預警
還可為特定物件設定閾值。
示例:您決定要在 INVENTORY 表空間中使用的空間超過 75% 時收到嚴重預警。(此表空間不允許其資料檔案自動進行擴充套件)。要建立和測試該預警,請執行以下步驟:
1.        在 Oracle Enterprise Manager 中,定位至“Tablespace(表空間)”頁,然後設定所需閾值。
2.        在 SQL*Plus 中,使用 CREATE TABLE … TABLESPACE … AS SELECT … 命令將現有表複製到相關的表空間中。繼續將行新增到此表中以填充表空間。
3.        在收到提示此表無法擴充套件的錯誤後,請檢查“Database Instance(資料庫例項)”主頁以獲取相關聯的預警。  
大多數預警都包含相關指導的名稱,可呼叫該指導以獲得詳細建議。對於每一條相應的預警訊息,資料庫控制都會提供一個連結以供呼叫相應的指導。
注:每隔 10 分鐘評估一次“表空間已滿”預警。


“度量”檢視和“預警”檢視
啟用後,MMON 會定期計算度量值並在記憶體中保留一小時。可通過 V$SYSMETRIC 檢視和 V$SYSMETRIC_HISTORY 檢視檢視記憶體中系統級別的度量值。對於服務級別的度量,也可使用類似的檢視。
只需啟用 AWR 的自動快照機制,即可為所有這些度量啟用磁碟度量收集。可通過 DBA_HIST_* 檢視檢視度量的磁碟值。度量歷史記錄的清除策略和其它快照資料的清除策略相同。
通過下列字典檢視,可訪問有關伺服器預警的資訊:
DBA_OUTSTANDING_ALERTS 說明 Oracle 資料庫伺服器認為處於未處理狀態的預警。
DBA_ALERT_HISTORY 表示不再處於未處理狀態的預警的有限時間內的歷史記錄。
DBA_THRESHOLDS 提供為該例項定義的閾值設定。
V$ALERT_TYPES 提供有關每個伺服器預警型別的資訊。
注:有關這些檢視的詳細資訊,請參閱《Oracle Database Reference》指南。


檢視使用者定義的 SQL 度量
除了伺服器計算的度量,EM 還計算其自己的度量集。“User-Defined Metrics(使用者定義的度量)”頁列出了使用者定義的現有 SQL 度量。可檢視度量資料;檢視、編輯或刪除度量定義;或根據現有的度量建立其他使用者定義的 SQL 度量。如果未建立任何使用者定義的 SQL 度量,則該列表為空。  
可自定義 EM 度量集,並可建立自己的、由 EM 檢查的度量。要建立自己的度量,請開啟“User-Defined Metrics(使用者定義的度量)”頁並單擊“Create(建立)”。該連結在“Database(資料庫)”主頁的“Related Links(相關連結)”部分中。


建立使用者定義的 SQL 度量
通過“User-Defined Metrics(使用者定義的度量)”頁可定義 SQL 度量。訪問此頁的路徑是“Database Home >“User-Defined Metrics (Related Links section) > Create(資料庫主頁 > 使用者定義的度量(“相關連結”部分)> 建立)” 。為該度量分配一個名稱,建立一條返回單個值或兩列內容的 SQL 語句。在該兩列中,第一列為“鍵”,第二列為“值”。可為每個鍵設定警告和嚴重閾值。  
有關建立使用者定義的度量的詳細資訊,請參閱《Oracle Enterprise Manager Advanced Configuration 10g Release 4》。
注:雖然“All Metrics(所有度量)”頁中不顯示使用者定義的度量,但主頁的“Alerts(預警)”部分會報告任何超出閾值的情況。

檢視使用者定義的主機度量
類似於使用者定義的 SQL 度量,您也可建立並檢視使用者定義的主機度量。  
可自定義 EM 度量集,並可建立自己的、由 EM 檢查的度量。要建立自己的度量,請開啟“User-Defined Metrics(使用者定義的度量)”頁並單擊“Create(建立)”。該連結在“Host(主機)”主頁的“Related Links(相關連結)”部分中。要定位至此頁,請單擊“Database(資料庫)”主頁上的“Hostname(主機名)”連結,然後單擊“Host(主機)”頁上相關連結部分中的“User-Defined Metrics(使用者定義的度量)”。


建立使用者定義的主機度量
通過“User-Defined Metrics(使用者定義的度量)”頁可定義主機度量。訪問此頁的路徑是“Database Home > Hostname > User-Defined Metrics (Related Links section) > Create(資料庫主頁 > 主機名 > 使用者定義的度量(“相關連結”部分)> 建立)” 。為該度量分配一個名稱,並建立一條返回單個值的主機命令列語句。可在閾值部分設定警告和嚴重閾值。  
注:雖然“All Metrics(所有度量)”頁中不顯示使用者定義的度量,但主頁的“Alerts(預警)”部分會報告任何超出閾值的情況。

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

相關文章