首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

AWR 報告分析方法論:從整體到局部、從對比到定位的系統化性能診斷指南

     編輯:Oracle 資料庫相關知識

AWR (Automatic Workload Repository) 報告長達數十頁,數百個指標,若無系統方法論,極易陷入「指標海洋」無法定位核心問題。本文構建 「整體→局部、對比→定位、業務→指標」 四維分析框架,配合關鍵指標閾值、典型等待事件解讀、RAC 專項指標與實戰跳躍式閱讀技巧,助您從報告中精準提煉性能瓶頸。

一、AWR 數據來源與快照機制

雙重數據源:

  1. 內存級統計:V$ 視圖 (即時、高頻、非持久)
  2. 持久級快照:MMON 進程定期刷新至 SYSAUX (DBA_HIST_* 視圖,歷史、趨勢、持久)

快照配置管理

-- 查看當前配置
SELECT snap_interval, retention FROM dba_hist_wr_control;
-- SNAP_INTERVAL: +00000 01:00:00.0 (1小時)
-- RETENTION:     +00007 00:00:00.0 (7天)

-- 修改:間隔 30分鐘,保留 10天
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(INTERVAL => 30, RETENTION => 10*24*60);

-- 手動創建快照 (變更前/後、壓測節點)
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT;

報告生成

@?/rdbms/admin/awrrpt.sql
-- 參數:報告類型 (HTML/TEXT)、實例號、起始/結束 Snap ID、輸出文件名

二、分析策略:四大核心原則

  1. 對比基準線:必須對比「正常時段」報告 (同業務時段、同負載特徵),單看絕對值無意義
  2. 整體先行,跳躍式深入:先讀前 3 頁整體概覽,再按關注點跳轉專題章節,切忌逐行細讀
  3. 業務語境解讀指標:同一指標在 OLTP/OLAP/批量/閒置時期含義截然不同,必須結合業務場景
  4. 關注「變化率」而非「絕對值」:同比/環比變化才是問題信號

三、系統整體狀況:前 3 頁必讀關鍵區

1. Load Profile (負載概覽) —— 系統「體檢報告」首頁

指標 關注意義 異常信號
DB Time(s)/Per Sec 每秒資料庫活躍會話數 (AAS),核心負載指標 接近/超過 CPU 核心數 → CPU 瓶頸
Redo Size/Per Sec 寫入壓力,反映 DML 吞吐量 突增 → 批量作業/異常 DML
Logical Reads/Per Sec 邏輯讀吞吐,緩存命中率分母 異常高 → 全表掃描/笛卡爾積
Physical Reads/Per Sec 物理讀吞吐,I/O 壓力直觀體現 高且伴隨 db file scattered read → 全掃描
Parses (Hard)/Per Sec 硬解析頻率,共享池/_cursor_sharing_ 健康度 > 100/s → 綁定變量缺失/共享池壓力
User Calls/Per Sec 客戶端交互頻率 極高 → 逐行處理/缺乏陣列綁定

2. Instance Efficiency Percentages (實例效率百分比) —— 健康度儀表盤

指標 健康閾值 異常含義
Buffer Nowait % > 99.9% 緩存爭用 (CBC Latch)
Redo NoWait % > 99.9% Redo Allocation Latch / Log File Sync
Library Hit % > 99% 硬解析過多 / 共享池不足
Soft Parse % > 95% 軟解析比例低 = 硬解析高
Execute to Parse % > 70% (OLTP 典型 > 90%) 低 = 大量硬解析 = 綁定變量問題
Parse CPU to Parse Elapsed % > 80% 解析 CPU 佔比低 = 等待鎖/鎖
> ⚠️ 反向陷阱:所有指標達標 ≠ 系統無問題 (如慢 SQL 執行計劃錯誤但緩存命中率高)。必須結合 Top Events 確認。

四、具體狀況深度定位:跳躍式閱讀地圖

1. Top 5/10 Timed Events —— 矛頭指向

等待事件 核心含義 典型根因 關聯章節
db file sequential read 單塊讀 (索引訪問、Undo 讀取) 索引深度過深、熱塊、Undo 爭用 SQL Statistics / Segments by Logical Reads
db file scattered read 多塊讀 (全表掃描、快速全掃描) 缺失索引、統計信息失效、並行度過高 SQL Statistics / Segments by Physical Reads
log file sync Commit 等待 LGWR 寫入 Redo 存儲延遲、Redo 日志組不足、Commit 過頻 Redo Log Statistics / Wait Events Detail
log file switch completion 日志切換等待歸檔/檢查點完成 歸檔慢、檢查點不完整、日志文件過小 Redo Log Statistics
enq: TX - row lock contention 行鎖爭用 長事務、未提交 DML、熱點行更新 Blocking Sessions / SQL Statistics
latch: cache buffers chains 熱塊爭用 (CBC Latch) 熱門索引根塊、嵌套循環連接、統計信息錯誤 Segments by Logical Reads / Latch Statistics
cursor: pin S wait on X 游標互斥體爭用 (硬解析/共享池) 未用綁定變量、共享池碎片、單一熱門 SQL Library Cache Statistics / SQL Statistics

2. Top N SQL —— 精準打擊目標

  • Elapsed Time 排序:總耗時最長 → 整體影響最大
  • CPU Time 排序:CPU 消耗最大 → 計算密集型優化
  • Buffer Gets 排序:邏輯讀最多 → 緩存壓力源
  • Physical Reads 排序:物理讀最多 → I/O 壓力源
  • Executions 排序:執行次數最多 → 微優化放大效應

動作:複製 SQL_ID → DBMS_XPLAN.DISPLAY_AWR(sql_id) 獲取歷史執行計劃 → 對比正常/異常時期 Plan Hash Value 差異。

3. RAC 專項指標 (僅 RAC 環境)

  • Global Cache CR/SER Blocks Received:跨實例塊傳輸量
  • Global Cache CR/SER Block Receive Time:跨實例傳輸延遲 (ms)
  • Global Cache Blocks Lost:塊丟失 (網絡/Interconnect 故障)
  • gc cr block 2-way / gc current block 2-way:雙向傳輸等待
  • 關注 Interconnect 延遲 < 1ms,> 2ms 需優化網絡/綁定 CPU

4. 內存與存儲專題

  • SGA/PGA Advisory:模擬擴容/縮容效果,指導內存調整
  • Tablespace / Datafile I/O Statistics:熱點文件、讀寫延遲、吞吐分佈
  • Segment Statistics:熱點表/索引 (Logical/Physical Reads、DB Block Changes)

五、實戰分析模板:標準化輸出結構


=== AWR 分析報告模板 ===
1. 基線對比
   - 對比時段: 正常 [Snap X-Y] vs 異常 [Snap A-B]
   - 業務背景: 促銷大促 / 批量跑批 / 例行維護

2. 整體負載變化
   - AAS: 正常 12.3 → 異常 45.8 (CPU 32 核, 已過載)
   - Hard Parse: 正常 5/s → 異常 320/s (綁定變量失效)
   - Physical Reads: 正常 800/s → 異常 4500/s (全掃描激增)

3. 核心等待事件 (Top 5 變化)
   - db file scattered read: 15% → 62% (全表掃描為主)
   - log file sync: 8% → 22% (Commit 等待)

4. 關鍵 SQL 定位
   - SQL_ID: abc123 (佔 DB Time 35%)
   - 問題: Plan 從 INDEX RANGE SCAN 變為 FULL TABLE SCAN
   - 根因: 統計信息過期 + 綁定窺探導致計劃翻轉

5. 根因鏈條
   統計信息未收集 → 優化器誤判基數 → 選擇 FTS → 物理讀激增 → I/O 瓶頸 → Log File Sync 連帶惡化

6. 採取行動
   - 立即: DBMS_STATS.GATHER_TABLE_STATS (關鍵表)
   - 短期: SQL Profile 固化優質計劃 / Cursor Sharing 設 FORCE
   - 長期: 自動統計收集策略優化 / 應用綁定變量改造

7. 驗證指標
   - AAS 降至 < 20, Scattered Read 佔比 < 20%, Hard Parse < 50/s

六、總結

AWR 分析不是「看報告」,而是「對比基線 → 定位變化 → 鎖定等待 → 鎖定 SQL → 還原根因 → 驗證治療」 的閉環醫療過程。掌握 Load Profile、Instance Efficiency、Top Events、Top SQL、RAC 專項、內存/存儲 六大閱讀站點,建立個人化「跳躍式閱讀地圖」,您就能在 10 分鐘內從百頁報告中提煉出核心性能處方。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved