九步優化閉環
- 設定可量化目標:「當前耗時 30 秒,目標 5 秒內完成」;
- 採集基線性能:高峰期連續採集 3-5 個 15 分鐘 STATSPACK/AWR 快照;
- 定位瓶頸:等待事件分析(系統級)+ 高負載 SQL 識別(語句級);
- 啟用跟蹤:
ALTER SESSION SET EVENTS '10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
- 檢查 OS 資源:
vmstat、iostat、mpstat 定位 CPU/內存/IO 爭用;
- 優化對象:應用 SQL、索引/分區、SGA/PGA、並發鎖、OS 參數;
- 變更控制:記錄每次調整內容、時間、負責人、預期效果;
- 驗證效果:同條件重新採集快照,對比關鍵指標;
- 迭代直到達標:循環步驟 3-7,直到滿足步驟 1 目標。
關鍵工具鏈
| 工具 | 用途 |
| STATSPACK / AWR | 實例級性能快照、報表生成 |
| TKPROF | 格式化 10046 跟蹤文件,分析 SQL 執行計劃、等待 |
| EXPLAIN PLAN / SQL Tuning Advisor | 單條 SQL 優化建議 |
| OEM / Cloud Control | 圖形化監控、自動化診斷(ADDM) |
| OS 命令 | vmstat/iostat/sar/top/prstat |
STATSPACK 快速部署腳本
-- 1. 創建表空間
CREATE TABLESPACE perfstat DATAFILE '/u02/oradata/perfstat.dbf' SIZE 500M EXTENT MANAGEMENT LOCAL;
-- 2. 安裝
@$ORACLE_HOME/rdbms/admin/spcreate.sql
-- 3. 採集快照
EXEC statspack.snap;
-- 4. 生成報表
@$ORACLE_HOME/rdbms/admin/spreport.sql
目標設定模板
操作:____________________
當前耗時:___ 秒/分/時
目標耗時:___ 秒/分/時
當前資源佔用:___ (CPU%/IOPS/內存)
目標資源上限:___
避坑指南
- 不要在無基線數據時盲目調參數;
- 不要同時變更多個參數,無法歸因;
- 不要忽略應用層 SQL 改寫(往往收益最大);
- 不要將「調優」等同於「調參數」,架構優化才是根本。