STATISTICS_LEVEL = TYPICAL 或 ALL。-- 1. 連接數據庫
sqlplus / as sysdba
-- 2. 創建開始快照 (FLUSH_LEVEL=ALL 確保全量刷新)
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(flush_level => 'ALL');
-- 3. 運行業務負載 (建議 30-60 分鐘,覆蓋高峰期)
-- 此處執行待分析的 SQL、批處理、應用壓測等
-- 4. 創建結束快照
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(flush_level => 'ALL');
-- 5. 生成 AWR 報告 (文本/HTML)
@?/rdbms/admin/awrrpt.sql
-- 按提示選擇:報告類型(text/html)、開始快照ID、結束快照ID、報告名稱
AWR 默認每小時自動快照 (可通過 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS 調整間隔/保留)。
@?/rdbms/admin/awrrpt.sql
-- 直接選擇已有的兩個快照 ID 即可
DECLARE
v_report CLOB;
BEGIN
-- 文本報告
v_report := DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(
dbid => (SELECT dbid FROM v$database),
inst_num => 1,
bid => 1234, -- 開始快照 ID
eid => 1235 -- 結束快照 ID
);
-- 寫入文件或發送郵件
DBMS_XSLPROCESSOR.CLOB2FILE(v_report, 'DATA_PUMP_DIR', 'awr_1234_1235.txt');
END;
/
| 章節 | 關注指標 | 異常閾值參考 |
|---|---|---|
| Load Profile | DB Time/s, Redo/s, Logical Reads/s | DB Time > 1.0 表示 CPU 壓力大 |
| Top 5 Timed Events | 等待事件佔 DB Time % | db file sequential read > 50% 關注索引/磁盤 |
| SQL Statistics | Elapsed Time, Executions, Buffer Gets | 單次 Elapsed > 1s 或 Buffer Gets > 100萬 |
| Instance Activity | parse count (hard), execute count | Hard Parse > 100/s 需綁定變量 |
| Segments by Logical/Physical Reads | 熱塊對象 | 前 5 段佔比 > 50% 考慮分區/緩存 |
DBA_HIST_SNAPSHOT 保留天數 (默認 8 天),必要時 MODIFY_SNAPSHOT_SETTINGS(retention => 43200) 設 30 天。EXEC DBMS_STATS.GATHER_TABLE_STATS('SYS','WRH$_ACTIVE_SESSION_HISTORY') 等核心表。awrrpti.sql 指定實例號,或 awrgrpt.sql 生成全叢集報告。