ash的一點總結

warehouse發表於2009-10-31
10g 引入ash(active session history)真是個不錯的東西[@more@]

ash的一點總結
10g 引入ash(active session history)真是個不錯的東西
10g引入v$active_session_history檢視用來定期取樣v$session中的active session的資料資料,這裡的active可以這樣理解,根據oracle的doc描述,只要session處於等待或者持有cpu就算活動的,對應的含義是:WAITING或者ON CPU;

取樣的間隔受到隱含引數_ash_sampling_interval的限制,default是1000,單位ms(毫秒),不過嘗試修改為3000,貌似沒有起作用,這個大家也可以自己測試;v$active_session_history的內容其實是來自記憶體結構,oracle直接讀取share pool中的一部分割槽域,這部分割槽域稱為:ASH buffers,當前大小可以這樣檢視:

SQL> select * from v$sgastat where name='ASH buffers';

POOL NAME BYTES
------------ -------------------------- ----------
shared pool ASH buffers 2097152

SQL>

目前是2m,ASH buffers的取值大小為:Min(shared_pool_size*5%,2M*cpu_count)

v$active_session_history中的資料正常由mmon後臺程式default每隔1小時寫入磁碟,但是當資料達到ASH buffers的2/3滿時,由mmnl後臺程式寫入磁碟,最終被保留到awr對應的基表中,基表對應的檢視是dba_hist_active_sess_history,我們可以瀏覽該檢視檢視session的歷史資料,dba_hist_active_sess_history保留的時間和awr保留snapshot保留的時間是一樣的,default 7天,我們也可以修改。

v$active_session_history中的有用欄位絕大多數和v$session相同,其實v$active_session_history就是對v$session的延續,由於當session結束時v$session中就沒有了該session的資訊,因此想了解一個session過去的資訊在10g之前是不可能的,10g引入的v$active_session_history解決了這一問題,由於v$active_session_history中資料的取樣粒度較小,這樣我們就根據v$active_session_history的資料進行不同粒度的彙總,從而分析不同時期系統的效能;v$active_session_history中提供的資訊比較豐富:彙總之後有top (user,backgound)event,top session ,top command type,top services,top client,top blocking session,top session running PQs,top object/file/latch等,我們客戶根據ash report從不用角度分析系統的效能

最後簡單介紹一下ash report的產生,可以使用em來產生,
也可以在sqlplus中執行指令碼:$ORACLE_HOME/ashrpt.sql來產生report,report有2種格式,default html,產生報告時需要輸入begin time,
這個既可以輸入相對時間也可以輸入絕對時間,
執行時看提示的例子就可以了,這裡的時間格式和nls環境變數沒有任何關係,之後輸入duration,duration只能是一個絕對的時間,default是sysdate,最後輸入報表的路徑和名字就可以了。

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

相關文章