Oracle Database 10g 內建 自動工作負載儲存庫 (AWR),不僅蒐集統計資料,更導出效能度量,主動追蹤潛在問題。安裝即啟用,零配置。
執行 $ORACLE_HOME/rdbms/admin/awrrpt.sql,介面類似 Statspack,可選擇兩個快照編號產生文字或 HTML 格式報表(含超連結導航),極易閱讀。
由 MMON (Manageability Monitor) 及其從進程每小時自動擷取快照(可調整),資料保留 7 天(可修改)。查看目前設定:
SELECT SNAP_INTERVAL, RETENTION FROM DBA_HIST_WR_CONTROL; -- 結果範例:+00000 01:00:00.0 | +00007 00:00:00.0
修改為 20 分鐘擷取、保留 2 天:
BEGIN
DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
INTERVAL => 20,
RETENTION => 2*24*60 -- 分鐘
);
END;
WRM$_*;歷史統計表:WRH$_*DBA_HIST_*,如 DBA_HIST_SYSMETRIC_SUMMARY查詢所有 AWR 視圖:
SELECT VIEW_NAME FROM USER_VIEWS WHERE VIEW_NAME LIKE 'DBA\_HIST\_%' ESCAPE '\';
DBA_HIST_METRIC_NAME 定義度量名稱、群組、單位。例如 CPU Usage Per Sec(單位:CentiSeconds Per Second)。結合 DBA_HIST_SYSMETRIC_SUMMARY 可分析 CPU 消耗趨勢:
SELECT BEGIN_TIME, INTSIZE, NUM_INTERVAL, MINVAL, MAXVAL, AVERAGE, STANDARD_DEVIATION FROM DBA_HIST_SYSMETRIC_SUMMARY WHERE METRIC_ID = 2075;
標準差輔助判斷平均值代表性:標準差遠大於平均值時,平均值失真。
ADDM 在每次快照後自動分析 AWR 資料,識別效能瓶頸(如 Buffer Busy Waits),定位問題段(索引/表),並給出具體建議(重建索引、調整儲存參數、啟用自動段空間管理等)。實現 24/7 自動化診斷,釋放 DBA 專注策略性工作。
透過 V$SYS_TIME_MODEL 觀察資料庫時間花費分佈(DB Time、DB CPU、Parse Time、SQL Execute Time 等),快速定位效能消耗熱點。
SELECT STAT_NAME, VALUE FROM V$SYS_TIME_MODEL;