標籤:發送 資料庫系統 實體記憶體 資料收集 網路應用 處理 情況 編號 命令
Oracle自動效能統計
??高效診斷效能問題,需要提供完整可用的統計資訊,好比醫生給病人看病的望聞問切,才能夠正確的確診,然後再開出相應的藥方。Oracle資料庫為系統、會話以及單獨的sql語句產生多種類型的累積統計資訊。本文主要描述oracle效能統計涉及到的相關概念及統計對象,以更好的利用統計資訊為效能調整奠定基礎。
一、效能統計資訊的幾個術語
??效能統計資訊依賴於delta值的累計,即增量值。增量值反映了在某個特定時段某個特定事件的趨勢,或者說波動的幅度。通過對比在開始期間統計的累計值和結尾處的累計值之間的差異,才能夠更清晰的瞭解該項值在系統不同負載時間段所需要的資源開銷以及用於定位效能瓶頸。
??在Oracle資料庫中,可以通過查詢V$SESSTAT和V$SYSSTAT來查詢統計值的累計情況。由於這2個視圖為動態效能檢視,因此,這2個視圖的資料收集的僅僅是自執行個體啟動以來的統計資料。如此這般,那資料庫關閉後所有的統計資訊丟失腫麼辦,不用著急,有AWR來定期進行儲存。
??度量是Oracle資料庫收集的另一種統計類型。一個度量被定義為在一些累積統計資訊的變動率。該速率可以對各種單元進行測量,包括時間、事務或資料庫調用。例如,每秒的資料庫調用是一個度量。度量值可以從動態效能檢視查詢獲得。其中的值是在一個相當小的時間間隔的平均值,通常為60秒。最近的度量值的曆史是在V$視圖,同時一些資料也由AWR快照進行持久化保持。
??Oracle對活動會話過程中出現的相關等待進行採樣,並將這些資料收集到記憶體中,可以用V$視圖進行訪問,也可以將其產生報告,用於快速或者即時的定位效能問題。那這個部分就是所謂的ASH,活動會話曆史。同時這些資料由AWR快照處理也將其寫入持久儲存。
??有資料,能比對,才能夠真正反映問題的實質。那麼在Oracle資料庫裡邊,我們可以將其業務負載高峰期的活動會話曆史資料,更確切的說是AWR持久化的資料貼個標籤,這個標籤就是所謂的基準。因此基準就是某個特定時段業務高峰期資料庫整體效能的一個基準報告,一旦當後續資料庫出現效能問題或運行不佳的時候,通過使用基準,與效能問題期間的效能統計資料進行比對,得出兩者的差異報告,有助於問題的定位於解決。
二、系統層級效能統計
??作業系統基本效能統計提供了系統主要硬體組件的使用和效能的資訊,以及作業系統本身的效能。這些資訊對於檢測潛在的資源消耗,如CPU周期和實體記憶體,以及檢測外設效能不良,如磁碟機是至關重要的。 作業系統統計是硬體和作業系統工作狀況的重要的指標。主要包括以下重要訊息。
??CPU利用率是調優過程中最重要的作業系統統計。應擷取整個系統和多處理器系統中單個CPU的利用率。每個CPU的利用率可以檢測單線程和可擴充性問題。大多數作業系統在使用者空間或核心空間顯示CPU時間開銷,這些額外的統計資料可以更好地分析CPU實際執行情況。
??在僅僅單個應用程式啟動並執行Oracle資料庫系統中,通常情況下,該業務系統在使用者空間中運行資料庫活動。服務於資料庫的活動請求(如調度、同步、I/O、記憶體管理、進程/線程建立和刪除)則在核心模式(空間)下運行。在一個CPU充分利用的系統中,一個健康的Oracle資料庫在使用者空間CPU的開銷通常在運行65%到95%之間。
??可以通過查詢V$osstat視圖捕獲硬體和作業系統層級的相關資訊,使得判定硬體級資源存在的問題更容易。V$sysmetric_history視圖保留主機一小時內CPU使用度量,以每一分鐘時間間隔來表示的CPU使用率。V$ sys_time_model視圖提供了有多少CPU被Oracle資料庫使用。這兩組統計資料更能夠確定Oracle資料庫或其他系統活動是否是CPU問題的原因。
??虛擬記憶體統計主要用於判斷系統上是否存在大量分頁或交換活動。當大量分頁和交換時,系統效能會迅速下降。單個進程的記憶體統計資料可以檢測記憶體流失是否是由於某個進程釋放記憶體失敗而導致。
??I/O子系統的效能決定或影響著資料庫的效能。大多數作業系統對磁碟提供一些擴充的統計資訊。最重要的磁碟統計資訊是當前的回應時間和磁碟隊列的長度。這些統計資料顯示磁碟是否處於最佳狀態,或者磁碟是否正在超負荷工作。
??測量I/O系統的正常效能;取決於所使用的硬體,單個塊讀取範圍的典型值從5到20毫秒。如果硬體顯示的回應時間遠高於正常的效能值,那麼它表現不佳或超負荷工作。這就是瓶頸。如果磁碟隊列開始超過兩個,那麼磁碟是一個潛在的瓶頸系統。
??Oracle資料庫提供了一些在I/O調用時的I/O統計資訊。這些統計資料在以下視圖擷取。
??v$iostat_consumer_group :
????在啟用資源計劃後,該視圖捕獲I/O相關資訊,是所有資源消費群組統計。資料庫樣本統計每小時累積並將它們儲存在AWR中。
??v$iostat_file :
????該視圖是基於磁碟檔案I/O的統計,主要用於以檔案層級展現檔案訪問頻度。
??v$iostat_function:
????該視圖是基於I/O資料庫功能(如LGWR和DBWR)的統計資料。
??用於確定網路或網路介面是否過載或沒有最佳執行。在今天的網路應用中,網路延遲可以是實際使用者回應時間的很大一部分。出於這個原因,這些統計是一個關鍵的調試工具。
??v$IOSTAT_NETWORK:
????該視圖提供網路相關統計資訊查詢
三、資料庫統計資訊
??資料庫統計提供資料庫上的負載類型以及資料庫使用的內部和外部資源的資訊。
??等待事件是由伺服器處理序或線程遞增的統計資料,也就是說在繼續處理當前某項任務之前,它必須等待某個事件完成才能繼續處理。等待事件數目據揭示了可能影響效能的問題的各種癥狀,如鎖存爭用、緩衝區爭用和I/O爭用。
??為了更好的分析不同等待事件,Oracle將等待事件進行了分類。等待事件分類包括:管理,應用程式,叢集,提交,並發,配置,空閑,網路,其他,調度,系統I/O,和使用者I/O。
?? Author : Leshami
?? Blog : http://blog.csdn.net/leshami
??下面的列表包括一些類中的等待的常見樣本:
?? ??1. 應用程式:由行級鎖定或顯式鎖命令所引起的鎖等待
?? ??2. 提交:提交後等待重做日誌寫入確認
?? ??3. 空閑:表示會話不活動的等待事件,例如來自用戶端的sql*net訊息
?? ??4. 網路:等待資料通過網路發送
?? ??5. 使用者I/O:等待塊被讀取磁碟
?? 基於時間模型統計,主要是基於操作類型測量在資料庫中花費的時間的統計資訊。最重要的時間模型統計是資料庫時間,即DB Time。資料庫時間表示在資料庫調用中所花費的總時間,是執行個體工作負載量的總指標。
?? 在Oracle數控中,每個組件都有自己的統計資料。因此通過該組件與整體DB Time進行比對,可以很好地衡量這個組件的效能,或者說這個組件佔據整個DB Time的百分比。如果能夠基於這些開銷過大的組件來進行調整,也即是整個DB Time開銷的時間更少。
DB Time:
??即所有花費在資料庫層面調用時間的總和,包括所有會話(前台進程)以及非空閑等待,CPU時間等
?? DB Time 是從執行個體啟動以來時間的累計測量。由於DB時間是由所有非空閑使用者會話的時間組合來計算的,所以DB時間可能超過執行個體開始後所經過的實際時間。例如,已經運行了30分鐘的執行個體可能有四個活動使用者會話,其累積DB Time大約為120分鐘。
更多關於時間統計模型可以參考:Oracle Time Model Statistics(時間模型統計)
??Oracle對當前資料庫活動會話,每秒進行採樣,並將其最近10次的等待資訊儲存到v$session_wait,同時將其歸檔到活動會話曆史表v$session_wait_history。這即是活動會話曆史(ASH)。這些資料被保留在從SGA分配的特定記憶體中,並且採用迴圈寫的方式,即採取LRU演算法定期清理該部分緩衝。說簡單一點,ASH採用的策略是:儲存處於等待狀態的活動session的資訊,每秒從v$session_wait中採樣一次,並將採樣資訊儲存在記憶體中。由於SGA中的活動會話資訊儲存在迴圈緩衝區中,系統活動越大,可以在迴圈緩衝區中儲存的會話活動的秒數越小。因此這些資料就需要定期將其寫入到磁碟,那就是由MMON進程定期將部分資料寫入到AWR。AWR採用的策略是:每小時對v$active_session_history進行採樣一次,並將資訊儲存到磁碟中,並且保留8天(11g預設值),8天后舊的記錄才會被覆蓋。這些採樣資訊被儲存在視圖wrh$_active_session_history中。而這個採樣頻率(1小時)和保留時間(8天)可以根據實際情況進行調整。
??活動會話曆史通常包括以下資料:
????SQL語句及SQLID
????用於執行sql語句的sql計劃的sql計劃標識符和雜湊值
????SQL執行計畫資訊
????對象編號、檔案號和塊號
????等待事件標識符和參數
????工作階段識別項和會話序號
????模組和動作名稱
????會話的用戶端標識符
????服務散列標識符
????消費群組識別碼
??可以從V$SYSSTAT和V$SESSTAT兩個視圖擷取大量系統層級以及會話層級的統計資訊。
Oracle自動效能統計