優化器模式選擇
| 模式 | 特點 | 適用場景 |
| RULE (RBO) | 規則排名、語法驅動、字典驅動 | 僅為相容舊應用 |
| COST (CBO) | 成本最低路徑、統計資訊驅動 | 強烈推薦,成本主要源自邏輯讀次數 |
執行計劃固定
Stored Outline 機制
- 將理想執行計劃以 Hints 形式儲存於
OUTLN Schema。
- 語句完全匹配 (含大小寫、空白) 時自動套用。
- 分類管理:
CREATE_STORED_OUTLINES = category_name、USE_STORED_OUTLINES = category_name。
建立與使用流程
-- 自動捕捉
ALTER SESSION SET CREATE_STORED_OUTLINES = tune_cat;
-- 手工建立
CREATE OR REPLACE OUTLINE ol_name FOR CATEGORY tune_cat ON
SELECT ... FROM ... WHERE ...;
-- 啟用
ALTER SESSION SET USE_STORED_OUTLINES = tune_cat;
Private Outline 線上微調
- Stored Outline 的會話級副本,可編輯 Hints 而不影響生產。
USE_PRIVATE_OUTLINES = TRUE 時優先匹配 Private Outline。
- 驗證無誤後
PUBLIC 發布覆蓋原 Stored Outline。
Hints 直接干預
CREATE INDEX gen_idx ON customers(cust_gender);
SELECT /*+ INDEX(customers gen_idx) */
cust_last_name, cust_street_address, cust_postal_code
FROM sh.customers WHERE UPPER(gender) = 'M';
EXPLAIN PLAN 快速分析
-- 建立 plan_table
@?/rdbms/admin/utlxplan.sql
-- 生成計劃
EXPLAIN PLAN FOR SELECT last_name FROM hr.emp;
-- 查看 (含/不含並行資訊)
@?/rdbms/admin/utlxpls.sql -- 簡易
@?/rdbms/admin/utlxplp.sql -- 並行
統計資訊管理
| 對象 | 視圖 | 收集方式 |
| 表 | DBA_TABLES | ANALYZE TABLE ... COMPUTE/ESTIMATE STATISTICS |
| 索引 | DBA_INDEXES | ANALYZE INDEX ... VALIDATE STRUCTURE |
| 列 | USER_TAB_COL_STATISTICS | ANALYZE TABLE ... FOR COLUMNS ... |
| 直方圖 | DBA_HISTOGRAMS / DBA_TAB_HISTOGRAMS | ANALYZE TABLE ... FOR COLUMNS SIZE n ... |
最佳實踐:10g 後改用 DBMS_STATS 套件,支援並行、增量、自動收集,功能更強大。