AWR報告的詳細操做及說明:WHY—爲何會出現ASH和AWR?

1. 10g以前
用戶的鏈接將產生會話,當前會話記錄保存在v$session中;處於等待狀態的會話會被複制一份放在v$session_wait中。當該鏈接斷開後,其原來的鏈接信息在v$session和v$session_wait中就會被刪除。這是10g以前的情況。
2. v$session_wait_history與ASH
如果一個普通的會話(我是指沒有大量地耗費資源),則對於性能調整來講無足輕重。但若該會話在活動時大量佔用了資源(好比:CPU,內存,I/O等),該會話信息的丟失,將沒法評測當時的系統瓶頸到底是什麼。令DBA高興的是,oracle10g中保留下了v$session_wait中的這些信息。
在10g中新出現了一個視圖:v$session_wait_history。這個視圖保存了每一個活動session在v$session_wait中最近10次的等待事件。但這對於一段時期內的數據庫性能情況的監測是遠遠不夠的,爲了解決這個問題,在10g中還新添加了一個視圖:v$active_session_history。這就是ASH(active session history)。
典型的狀況下,爲了診斷當前數據庫的狀態,須要最近的五到十分鐘的詳細信息。然而,因爲記錄session的活動信息是很費時間和空間的,ASH採用的策略是:保存處於等待狀態的活動session的信息,每秒從v$session_wait中採樣一次,並將採樣信息保存在內存中。
3. AWR
注意,ASH的採樣數據是保存在內存中。而分配給ASH的內存空間是有限的,當所分配空間佔滿後,舊的記錄就會被覆蓋掉;並且數據庫重啓後,全部的這些ASH信息都會消失。這樣,對於長期檢測oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,這就是AWR(auto workload repository)。
因爲所有保存ASH中的信息是很是耗費時間和空間的,AWR採用的策略是:每小時對v$active_session_history進行採樣一次,並將信息保存到磁盤中,而且保留7天,7天后舊的記錄纔會被覆蓋。這些採樣信息被保存在視圖wrh$_active_session_history中。而這個採樣頻率(1小時)和保留時間(7天)是能夠根據實際狀況進行調整的,這就給DBA們提供了更加有效的系統監測工具。
AWR永久地保存系統的性能診斷信息,由SYS用戶擁有。一段時間後,你可能想清除掉這些信息;有時候爲了性能診斷,你可能須要本身定義採樣頻率來獲取系統快照信息。Oracle 10g在包dbms_workload_repository中提供了不少過程,經過這些過程,你能夠管理快照並設定基線(baselines)。
4. 小結
這樣,咱們就知道了ASH和AWR產生的緣由和功能。ASH保存了系統最新的處於等待的會話記錄,能夠用來診斷數據庫的當前狀態;而AWR中的信息最長可能有1小時的延遲,因此其採樣信息並不能用於診斷數據庫的當前狀態,但能夠用來做爲一段時期內數據庫性能調整的參考。
對於這些視圖間的繼承關係,eygle給出了一個關係圖:
圖1 各個視圖的層次
其中視圖dba_hist_active_sess_history是wrh$_active_session_history和其餘幾個視圖的聯合展示,一般經過這個視圖進行歷史數據的訪問。
分享:
 

0數據庫

喜歡session

相關文章
相關標籤/搜索