| 方法 | 適用場景 | 特點 |
| SQL Trace / 10046 Event | 特定模組/Session 深度分析 | 完整等待事件、Bind 變數、行數統計 |
| Statspack / AWR | 全庫高負載 SQL 識別 | 歷史趨勢、Top SQL 排行、自動收集 |
| V$SQL / V$SQLAREA | 即時進行中 SQL | 共享游標統計、執行計劃快照 |
| V$SESSION_WAIT | 阻塞/等待分析 | 實時等待事件、阻塞鏈 |
執行計劃查看四種方式
1. AUTOTRACE(SQL*Plus 內建)
SET AUTOTRACE ON -- 執行並顯示計劃+統計
SET AUTOTRACE TRACEONLY EXPLAIN -- 僅顯示計劃不執行
2. EXPLAIN PLAN + UTLXPLS
EXPLAIN PLAN FOR SELECT ... FROM ...;
@?/rdbms/admin/utlxpls.sql
3. V$SQL_PLAN 即時查詢(推薦生產環境)
COLUMN operation FORMAT A16
COLUMN "Query Plan" FORMAT A60
COLUMN options FORMAT A15
COLUMN object_name FORMAT A20
COLUMN id FORMAT 99
SELECT id,
LPAD(' ', 2*(level-1)) || operation || ' ' || options || ' ' || object_name ||
DECODE(id, 0, ' Cost = ' || position) "Query Plan"
FROM (SELECT * FROM v$sql_plan WHERE address = '&addr') sql_plan
START WITH id = 0
CONNECT BY PRIOR id = parent_id;
優點:無需執行權限、即時反映共享游標實際計劃、可查歷史計劃變更。
4. 第三方工具
- PL/SQL Developer:圖形化計劃、成本分析
- TOAD:進階調優顧問、計劃比較
- Oracle SQL Developer:免費、整合資料庫管理
關鍵計劃操作解讀