Oracle數(shù)據(jù)庫(kù)ASH和AWR的簡(jiǎn)單介紹
在Oracle數(shù)據(jù)庫(kù)中,有時(shí)我們可能會(huì)遇到這樣的術(shù)語(yǔ):ASH和AWR,那么它們是怎樣產(chǎn)生的呢?它們的作用又是什么呢?本文我們就來(lái)介紹這一部分內(nèi)容。
1.10g之前
用戶的連接將產(chǎn)生會(huì)話,當(dāng)前會(huì)話記錄保存在v$session中;處于等待狀態(tài)的會(huì)話會(huì)被復(fù)制一份放在v$session_wait中。當(dāng)該連接斷開(kāi)后,其原來(lái)的連接信息在v$session和v$session_wait中就會(huì)被刪除。這是10g之前的狀況。
2.v$session_wait_history與ASH
若是一個(gè)普通的會(huì)話(我是指沒(méi)有大量地耗費(fèi)資源),則對(duì)于性能調(diào)整來(lái)說(shuō)無(wú)足輕重。但若該會(huì)話在活動(dòng)時(shí)大量占用了資源(比如:CPU,內(nèi)存,I/O等),該會(huì)話信息的丟失,將無(wú)法評(píng)測(cè)當(dāng)時(shí)的系統(tǒng)瓶頸究竟是什么。令DBA高興的是,Oracle 10g中保留下了v$session_wait中的這些信息。
在Oracle 10g中新出現(xiàn)了一個(gè)視圖:v$session_wait_history。這個(gè)視圖保存了每個(gè)活動(dòng)session在v$session_wait中最近10次的等待事件。但這對(duì)于一段時(shí)期內(nèi)的數(shù)據(jù)庫(kù)性能狀況的監(jiān)測(cè)是遠(yuǎn)遠(yuǎn)不夠的,為了解決這個(gè)問(wèn)題,在10g中還新添加了一個(gè)視圖:v$active_session_history。這就是ASH(active session history)。
典型的情況下,為了診斷當(dāng)前數(shù)據(jù)庫(kù)的狀態(tài),需要最近的五到十分鐘的詳細(xì)信息。然而,由于記錄session的活動(dòng)信息是很費(fèi)時(shí)間和空間的,ASH采用的策略是:保存處于等待狀態(tài)的活動(dòng)session的信息,每秒從v$session_wait中采樣一次,并將采樣信息保存在內(nèi)存中。
3.AWR
注意,ASH的采樣數(shù)據(jù)是保存在內(nèi)存中。而分配給ASH的內(nèi)存空間是有限的,當(dāng)所分配空間占滿后,舊的記錄就會(huì)被覆蓋掉;而且數(shù)據(jù)庫(kù)重啟后,所有的這些ASH信息都會(huì)消失。這樣,對(duì)于長(zhǎng)期檢測(cè)oracle的性能是不可能的。在Oracle10g中,提供了***保留ASH信息的方法,這就是AWR(auto workload repository)。
由于全部保存ASH中的信息是非常耗費(fèi)時(shí)間和空間的,AWR采用的策略是:每小時(shí)對(duì)v$active_session_history進(jìn)行采樣一次,并將信息保存到磁盤(pán)中,并且保留7天,7天后舊的記錄才會(huì)被覆蓋。這些采樣信息被保存在視圖wrh$_active_session_history中。而這個(gè)采樣頻率(1小時(shí))和保留時(shí)間(7天)是可以根據(jù)實(shí)際情況進(jìn)行調(diào)整的,這就給DBA們提供了更加有效的系統(tǒng)監(jiān)測(cè)工具。
AWR***地保存系統(tǒng)的性能診斷信息,由SYS用戶擁有。一段時(shí)間后,你可能想清除掉這些信息;有時(shí)候?yàn)榱诵阅茉\斷,你可能需要自己定義采樣頻率來(lái)獲取系統(tǒng)快照信息。Oracle 10g在包dbms_workload_repository中提供了很多過(guò)程,通過(guò)這些過(guò)程,你可以管理快照并設(shè)定基線(baselines)。
4.小結(jié)
這樣,我們就知道了ASH和AWR產(chǎn)生的原因和功能。ASH保存了系統(tǒng)***的處于等待的會(huì)話記錄,可以用來(lái)診斷數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài);而AWR中的信息最長(zhǎng)可能有1小時(shí)的延遲,所以其采樣信息并不能用于診斷數(shù)據(jù)庫(kù)的當(dāng)前狀態(tài),但可以用來(lái)作為一段時(shí)期內(nèi)數(shù)據(jù)庫(kù)性能調(diào)整的參考。
對(duì)于這些視圖間的繼承關(guān)系,eygle給出了一個(gè)關(guān)系圖:
圖1 各個(gè)視圖的層次
其中視圖dba_hist_active_sess_history是wrh$_active_session_history和其他幾個(gè)視圖的聯(lián)合展現(xiàn),通常通過(guò)這個(gè)視圖進(jìn)行歷史數(shù)據(jù)的訪問(wèn)。
關(guān)于Oracle數(shù)據(jù)庫(kù)ASH和AWR方面的知識(shí)就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@。
【編輯推薦】
- 關(guān)于Oracle數(shù)據(jù)庫(kù)閃回個(gè)性的詳細(xì)介紹
- Oracle數(shù)據(jù)庫(kù)對(duì)DDL語(yǔ)句和DML語(yǔ)句的事務(wù)管理
- Oracle數(shù)據(jù)庫(kù)啟動(dòng)參數(shù)文件及相關(guān)SQL語(yǔ)句簡(jiǎn)介
- Oracle數(shù)據(jù)庫(kù)的幾種文件及表空間數(shù)據(jù)塊的知識(shí)簡(jiǎn)介
- Oracle數(shù)據(jù)庫(kù)查詢登錄用戶名所屬表空間及其使用情況