9i 引入 **Bind Variable Peeking** (綁定變數窺探),針對資料傾斜在硬解析時窺探首次綁定值決定執行計劃,但可能導致計劃不穩定。Oracle 提供隱藏參數控制:
SELECT x.ksppinm NAME, y.ksppstvl VALUE, x.ksppdesc DESCRIB
FROM sys.x$ksppi x, sys.x$ksppcv y
WHERE x.inst_id = USERENV('Instance')
AND y.inst_id = USERENV('Instance')
AND x.indx = y.indx
AND x.ksppinm LIKE '%peek%';
NAME VALUE DESCRIB
------------------------ -------- ------------------------------
_optim_peek_user_binds TRUE enable peeking of user binds
TRUE:啟用窺探。FALSE:ALTER SYSTEM SET "_optim_peek_user_binds"=FALSE SCOPE=SPFILE; 重啟後禁用窺探,執行計劃不再受首次綁定值影響,適合高度傾斜且計劃抖動嚴重的系統。注意:隱藏參數修改需謹慎,建議在測試環境驗證後再套用生產,並記錄變更。