2020年8月12日 星期三

3.6 Automatic Workload Repository (AWR)

自 Oracle 10g 這個版本開始,引進了 Automatic Workload Repository (AWR) 這個功能。之前介紹過 Statspack 是可以用來分析資料庫過往的效能資訊,不過 Statspack 是需要 DBA 額外再進行安裝,並且對於資料的蒐集與歷史資料的清除都必須自行設定資料庫排程來進行,而 AWR 可以說是 Statspack 的進階版,它的功能與 Statspack 雷同,同樣是會定時蒐集資料庫的效能資訊,只是這些動作是由系統自動來做,且資料庫建立起來預設就會有的功能,DBA 無須再做額外的設定就可以使用。


AWR的原理在於系統將透過 MMON(Manageability Monitor) 這個 background process 預設每 60 分鐘會將資料庫中 v$ 的資訊儲存起來,這些儲存的資訊我們稱它做 snapshot。


AWR 所存放的 snapshots 是位於 Oracle 資料庫 SYSMAN 這個使用者底下,使用的是 SYSAUX 這個 tablespace,預設會存放 8 天 (Oracle 10g 版本存放 7 天)。同樣的透過 AWR 所存放的資訊,DBA 可以產出 AWR Report 來分析資料庫的效能進而進行調校。


雖然 AWR 是由系統自動進行任務,但是 DBA 仍然可以更改其中的設定,例如更改資料蒐集的間隔、snapshot 保留的天數,或是手動進行一次性的 snapshot。透過 Oracle Database Control,於伺服器頁簽下有個 “自動工作負載儲存區域” 的選項 (Oracle 10g 位於管理頁簽底下):


透過此頁簽便可以更改 snapshot 保留時間或是間隔等相關設定,接下來點選快照選項便可以得知目前資料庫已保留了哪些時段的歷史資訊,也就是於哪些時段做了 snapshot:


於此頁面右方 “建立” 的選項,DBA 也可以於當下的時間點自行建立一次性的 snapshot。


若是資料庫沒有設定 Database Control,也可以透過 DBMS_WORKLOAD_REPOSITORY 這個 package 來更改 AWR 的設定,例如:

1. 手動建立 snapshot:

 SQL> exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;


2. 刪除 snapshot:

 SQL> exec DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(LOW_SNAP_ID => 100, HIGH_SNAP_ID => 200);


3. 調整 snapshot 保留時間為 30天,每 30 分鐘收集一次:

 SQL> exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(RETENTION => 43200, INTERVAL => 30); (設定單位為 分鐘)


4. 查詢 AWR 設定:

 SQL> select DBID, SNAP_INTERVAL, RETENTION from DBA_HIST_WR_CONTROL;


最後我們來看一下如何產出 AWR Report,透過 Database Control “自動工作負載儲存區域” 的選項,直接點選 “執行 AWR 報表”:


AWR 報表是用來分析資料庫某一個時間區間的效能資訊,因此點選後須選擇起使與結束的 snapshot ID 來決定報表所產出的區間:


選擇好區間後便可以點選 “產出報表”。


若是沒有開啟 Database Control,同樣的也可以使用指令的模式來產出 AWR Report,進入 SQL*PLUS 執行 $ORACLE_HOME/rdbms/admin 底下的 awrrpt.sql:


執行之後,首先會要選擇產出的 AWR Report 的格式,可以為 html 或是 text 兩種格式,而透過 Database Control 產出的 AWR Report 則是只能為 html 格式,接下來系統會詢問要列出幾天內的 snapshot ID,這項功能是為了避免一下子列出太多的 snapshot ID 反而造成不容易選取想要的區間,接下來便可以選取起使與結束的 snapshot ID:


最後須輸入導出的 AWR Report 的檔案名稱,若不設定的話預設會以 awrrpt_<thread_id>_<start_snap_id>_<end_snap_id> 開頭來命名,再輸入完所有資訊後,便完成了一份 AWR Report 的產出。

沒有留言:

張貼留言