EXECUTIONS、DISK_READS、BUFFER_GETS、COMMAND_TYPE、OPTIMIZER_MODE、SQL_TEXT、SHARABLE_MEM。用途:找出高頻、高耗、需索引優化的 SQL。ALTER SESSION SET SQL_TRACE=TRUE;
-- 執行目標 SQL
ALTER SESSION SET SQL_TRACE=FALSE;
-- 使用 TKPROF 分析 trace 檔
分析重點:Parse 次數多→增大 Shared Pool;query/current 大→缺索引;disk 大→索引可改善;Library Cache Miss 多→增大 Shared Pool。
兩大優化器:RBO (Rule-Based)、CBO (Cost-Based)。OPTIMIZER_MODE 參數值:
CHOOSE:有統計資訊用 CBO,無則用 RBO (預設)。ALL_ROWS:全 CBO,目標最佳吞吐量。FIRST_ROWS_n:全 CBO,目標前 N 列最佳回應時間 (n=1,10,100,1000)。FIRST_ROWS:相容模式,混合成本與啟發式。RULE:強制 RBO。建議:避免 CHOOSE 造成非預期全表掃描,明確指定 ALL_ROWS 或 FIRST_ROWS_n 並定期 ANALYZE 收集統計資訊。
需先建立 PLAN_TABLE (執行 @?/rdbms/admin/utlxplan.sql)。關鍵欄位:OPERATION、OPTIONS、OBJECT_NAME、ID、PARENT_ID。利用 CONNECT BY 可重構執行計劃樹。
CBO 依 WHERE/FROM 子句列舉可用路徑,依統計資訊評估成本,選擇最低成本計劃。