1. 程式人生 > >AWR報告的詳細操作及說明:WHAT ?什麼是AWR?

AWR報告的詳細操作及說明:WHAT ?什麼是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,還可以收集到資料庫執行的各方面統計資訊和等待資訊,用以診斷分析。 AWR的取樣方式是,以固定的時間間隔為其所有重要的統計資訊和負載資訊執行一次取樣,並將取樣資訊儲存在AWR中。 可以這樣說:ASH中的資訊被儲存到了AWR中的檢視wrh$_active_session_history中。ASH是AWR的真子集。 3. mmon程序與mmnl程序 快照由一個稱為 MMON 的新的後臺程序(及其從程序)以及MMNL後臺程序自動地每隔固定時間取樣一次。我們先來看一下10g的概念指南中對這兩個新增加的後臺程序的介紹: * MMON程序負責執行多種和管理相關(manageability-related)的後臺任務,例如: * 當某個測量值(metrics)超過了預設的限定值(threshold value)後提交警告 * 建立新的 MMON 隸屬程序(MMON slave process)來進行快照(snapshot) * 捕獲最近修改過的 SQL 物件的統計資訊 * MMNL程序負責執行輕量級的且頻率較高的和可管理性相關的後臺任務,例如捕獲會話歷史資訊,測量值計算等。 AWR的取樣工作由MMON程序每個1小時執行一次,ASH資訊同樣會被取樣寫出到AWR負載庫中。雖然ASH buffer被設計為保留1小時的資訊,但很多時候這個記憶體是不夠的,當ASH buffer寫滿後,另外一個後臺程序MMNL將會主動將ASH資訊寫出。 4. SYSAUX表空間 這些取樣資料都儲存在SYSAUX表空間中,並且以WRM$_* 和 WRH$_*的格式命名。前一種型別儲存元資料資訊(如檢查的資料庫和採集的快照),後一種型別儲存實際採集的統計資料。 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. 取樣資料量 由於資料量巨大,把所有ASH資料寫到磁碟上是不可接受的。一般是在寫到磁碟的時候過濾這個資料,寫出的資料佔取樣資料的10%,寫出時通過direct-path insert完成,儘量減少日誌生成,從而最小化資料庫效能的影響。 7. 初始化引數statistics_level AWR的行為受到引數STATISTICS_LEVEL的影響。這個引數有三個值: * BASIC:awr統計的計算和衍生值關閉.只收集少量的資料庫統計資訊. * TYPICAL:預設值.只有部分的統計收集.他們代表需要的典型監控oracle資料庫的行為. * ALL : 所有可能的統計都被捕捉. 並且有作業系統的一些資訊.這個級別的捕捉應該在很少的情況下,比如你要更多的sql診斷資訊的時候才使用.