Oracle數(shù)據(jù)庫中AWR的組成及工作原理的詳細介紹
上次我們介紹了:Oracle數(shù)據(jù)庫ASH和AWR的簡單介紹,今天我們詳細介紹一下AWR的組成以及它的工作原理,接下來就讓我們來一起了解一下這部分內容。
1.ash占用的內存大小
ASH的采集信息保存在內存中,在舊的信息被采樣到AWR中后,可被新采集的信息覆蓋,重啟oracle后該信息被清除。分配給ASH的內存大小可以查詢到:
- SQL> select pool, name, bytes/1024/1024 From v$sgastat where name like '%ASH %';
- POOL NAME BYTES/1024/1024
- ------------- ------------- ---------------
- shared pool ASH buffers 2
2.AWR更正
為了便于描述和理解,在第一部分中,我們說AWR就是保存ASH中的信息。
其實,AWR記錄的信息不僅是ASH,還可以收集到數(shù)據(jù)庫運行的各方面統(tǒng)計信息和等待信息,用以診斷分析。
AWR的采樣方式是,以固定的時間間隔為其所有重要的統(tǒng)計信息和負載信息執(zhí)行一次采樣,并將采樣信息保存在AWR中。
可以這樣說:ASH中的信息被保存到了AWR中的視圖wrh$_active_session_history中。ASH是AWR的真子集。
3.mmon進程與mmnl進程
快照由一個稱為MMON 的新的后臺進程(及其從進程)以及MMNL后臺進程自動地每隔固定時間采樣一次。我們先來看一下10g的概念指南中對這兩個新增加的后臺進程的介紹:
MMON進程負責執(zhí)行多種和管理相關(manageability-related)的后臺任務,例如:
當某個測量值(metrics)超過了預設的限定值(threshold value)后提交警告。
創(chuàng)建新的 MMON 隸屬進程(MMON slave process)來進行快照(snapshot)。
捕獲最近修改過的 SQL 對象的統(tǒng)計信息。
MMNL進程負責執(zhí)行輕量級的且頻率較高的和可管理性相關的后臺任務,例如捕獲會話歷史信息,測量值計算等。
AWR的采樣工作由MMON進程每個1小時執(zhí)行一次,ASH信息同樣會被采樣寫出到AWR負載庫中。雖然ASH buffer被設計為保留1小時的信息,但很多時候這個內存是不夠的,當ASH buffer寫滿后,另外一個后臺進程MMNL將會主動將ASH信息寫出。
4.SYSAUX表空間
這些采樣數(shù)據(jù)都存儲在SYSAUX表空間中,并且以WRM$_* 和 WRH$_*的格式命名。前一種類型存儲元數(shù)據(jù)信息(如檢查的數(shù)據(jù)庫和采集的快照),后一種類型保存實際采集的統(tǒng)計數(shù)據(jù)。
- SQL> select table_name from dba_tables where table_name like 'WRM$%';
- TABLE_NAME
- -----------------------
- WRM$_WR_CONTROL
- WRM$_SNAP_ERROR
- WRM$_SNAPSHOT
- WRM$_DATABASE_INSTANCE
- WRM$_BASELINE
當SYSAUX表空間滿后,AWR將自動覆蓋掉舊的信息,并在警告日志中記錄一條相關信息:
ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_3533490838_1522 by 128 in tablespace SYSAUX
5.采樣頻率和保留時間
可以通過查詢視圖dba_hist_wr_control或(wrm$_wr_control)來查詢AWR的采樣頻率和保留時間。默認為每1小時采樣一次,采樣信息保留時間為7天。
- SQL> select * from dba_hist_wr_control;
- DBID SNAP_INTERVAL RETENTION TOPNSQL
- ---- ------------- ----------- ----------
- 1148 +00000 00:1 +00007 00:0 DEFAULT
- SQL> select DBID, SNAP_INTERVAL, SNAPINT_NUM, RETENTION from wrm$_wr_control;
- DBID SNAP_INTERVAL SNAPINT_NUM RETENTION
- ---------- ------------------ ----------- --------------------
- 1160732652 +00000 01:00:00.0 3600 +00007 00:00:00.0
6.采樣數(shù)據(jù)量
由于數(shù)據(jù)量巨大,把所有ASH數(shù)據(jù)寫到磁盤上是不可接受的。一般是在寫到磁盤的時候過濾這個數(shù)據(jù),寫出的數(shù)據(jù)占采樣數(shù)據(jù)的10%,寫出時通過direct-path insert完成,盡量減少日志生成,從而最小化數(shù)據(jù)庫性能的影響。
7.初始化參數(shù)statistics_level
AWR的行為受到參數(shù)STATISTICS_LEVEL的影響。這個參數(shù)有三個值:
BASIC:awr統(tǒng)計的計算和衍生值關閉.只收集少量的數(shù)據(jù)庫統(tǒng)計信息。
TYPICAL:默認值.只有部分的統(tǒng)計收集.他們代表需要的典型監(jiān)控oracle數(shù)據(jù)庫的行為。
ALL:所有可能的統(tǒng)計都被捕捉. 并且有操作系統(tǒng)的一些信息.這個級別的捕捉應該在很少的情況下,比如你要更多的sql診斷信息的時候才使用。
關于Oracle數(shù)據(jù)庫AWR的組成以及它的工作原理的知識就介紹到這里了,希望本次的介紹能夠對您有所幫助。
【編輯推薦】