首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

利用 AWR 報告分析解決 Oracle CPU 過高問題完整案例

     編輯:Oracle 教學

利用 AWR 報告分析解決 Oracle CPU 過高問題完整案例

AWR 核心概念

  • AWR (Automatic Workload Repository):Oracle 10g+ 內建效能診斷基礎設施
  • GATHER_STATS_JOB:預設每小時收集一次快照,保留 8 天
  • 收集內容:等待事件、系統/會話級統計、高資源消耗 SQL 等
  • 可手動建立快照(測試前後)標記關鍵時間點

AWR 報告手動產生步驟

  1. 以 SYSDBA 登入 sqlplus
  2. 執行 @?/rdbms/admin/awrrpt.sql
  3. 選擇報告類型(text/html)、天數範圍、起始/結束 snap_id、報告名稱
  4. 報告輸出於 sqlplus 啟動目錄

案例背景

  • 某交易場景,資料庫 CPU 平均使用率近 90%
  • 12 Core 伺服器,Oracle 佔服務器 CPU 89.9% 的 99.5%

分析過程詳解

1. 報表頭與關鍵效能指標

檢視 Buffer Nowait、Buffer Hit、Library Hit、Execute to Parse、Parse CPU to Parse Elapsd、Redo NoWait 等比率,快速判斷瓶頸類型。

2. Time Model Statistics

DB Time: 15499 秒
  SQL Execute Elapsed Time: 15499 秒 (100%)
  Parse Time Elapsed: 26 秒 (0.17%)
  Hard Parse Elapsed Time: 26 秒 (100% of parse)

解析時間極短,硬解析佔解析 100% 但總量微小 → 解析非瓶頸,問題在資料存取階段。

3. 負載概要

資料庫層面 TPS 僅 1.3 → 極低吞吐,大量 CPU 消耗在少量查詢上。

4. SQL Ordered by CPU Time

鎖定兩個高 CPU SQL:

  • SQL_ID: cjnzff37c9gr3
  • SQL_ID: cq32agu0qkpd8

執行次數多、單次 CPU 高。

5. 執行計劃深度分析

@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql
-- 輸入上述 SQL_ID 取得詳細計劃

發現 CTR_LOAN_CONT 表存取 Cost 極高,索引範圍掃描需讀 196,000 行。該表 1,200+ 萬行、5888MB,統計資訊較新。

6. Segments by Logical Reads

96% 邏輯讀集中於 CTR_LOAN_CONT 表 → 確認核心熱點。

優化措施

  1. 邏輯下推至應用層:將資料庫中的複雜 SQL 判斷邏輯移至應用程式實現,降低資料庫計算負載
  2. 視圖優化:保留視圖結構,但新增第三方平台過濾條件;將 UNION(排序去重)改為 UNION ALL(無排序去重)

優化成果

指標優化前優化後改善幅度
CTR_LOAN_CONT 表存取 Cost15,359276降低 98.2%
資料庫 CPU 平均使用率89.9%11.6%降低 87%

AWR 分析標準化檢查清單

  1. Report Header:快照時間、資料庫版本、負載概要
  2. Load Profile:TPS、邏輯讀/物理讀/重做生成速率
  3. Instance Efficiency Percentages:命中率、解析比率
  4. Top 5 Timed Events:等待事件佔比
  5. SQL Ordered by CPU/Elapsed/Buffer Gets:高消耗 SQL 識別
  6. Segments by Logical/Physical Reads:熱點物件定位
  7. Time Model:DB Time 組成結構
  8. 執行計劃深度分析:索引使用、連接順序、Cardinality 準確度

工具補充

  • awrsqrpt.sql:單一 SQL 詳細報告
  • awrddrpt.sql:兩段快照差異報告(Period Comparison)
  • Enterprise Manager (EM) 圖形化介面
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved