SPM 是 Oracle 11g 引入的執行計劃管理機制,旨在解決優化器升級、統計資訊變更、參數調整等因素導致的執行計劃突變(Plan Regression)問題,確保 SQL 效能穩定。
OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES=TRUE),計劃自動存入基準DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE 驗證新計劃效能OPTIMIZER_USE_SQL_PLAN_BASELINES:啟用/停用基準使用(預設 TRUE)OPTIMIZER_CAPTURE_SQL_PLAN_BASELINES:啟用/停用自動捕獲(預設 FALSE)DBA_SQL_PLAN_BASELINES:檢視所有基準計劃DBA_SQL_PLAN_BASELINES:查看計劃歷史與驗證狀態DECLARE
pls PLS_INTEGER;
BEGIN
pls := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(sql_id => 'abc123');
END;
SET SERVEROUTPUT ON
DECLARE
rpt CLOB;
BEGIN
rpt := DBMS_SPM.EVOLVE_SQL_PLAN_BASELINE(
sql_handle => 'SYS_SQL_12345',
verify => 'YES',
commit => 'YES');
DBMS_OUTPUT.PUT_LINE(rpt);
END;
EXEC DBMS_SPM.DROP_SQL_PLAN_BASELINE(sql_handle => 'SYS_SQL_12345');
SPM 讓 DBA 從「救火式」效能調優轉向「預防式」計劃管理,大幅降低生產環境效能事故風險。