本文為「Oracle 全攻略」系列之查詢優化、DDL/DML 操作篇,以圖解方式呈現執行計畫分析、索引策略、統計資訊管理、分區剪枝、鎖機制、大量 DML 優化等核心主題。以下為知識脈絡摘要,建議搭配原文 12 張圖示閱讀。
EXPLAIN PLAN、DBMS_XPLAN.DISPLAY_CURSOR、AUTOTRACE 解讀操作 (Access Path、Join Method、Partition Pruning)。DBMS_STATS.GATHER_TABLE_STATS、METHOD_OPT 直方圖、STALE_PERCENT 自動收集閾值、PUBLISH=FALSE 測試新統計。ALL_ROWS (預設)、FIRST_ROWS_n、OPTIMIZER_FEATURES_ENABLE 版本回溯。LEADING、USE_NL/HASH/MERGE、INDEX/NO_INDEX、PUSH_PRED、OPT_ESTIMATE 修正基數估算。BITMAP JOIN INDEX 星型查詢。CREATE INDEX idx ON table (UPPER(col)) 解決函數導致索引失效。CREATE INDEX ... WHERE status='ACTIVE' 縮小索引體積。ALTER INDEX ... MONITORING USAGE、V$OBJECT_USAGE 識別未用索引。ALTER INDEX ... REBUILD ONLINE、COALESCE 整理碎片。ALTER INDEX ... INVISIBLE 驗證移除影響再決定 DROP。DEFERRED_SEGMENT_CREATION=TRUE 空表不分配段,節省空間。col GENERATED ALWAYS AS (expr) VIRTUAL 免儲存衍生值可建索引。INSERT /*+ APPEND */ 繞過緩衝區寫入數據塊,需 NOLOGGING 配合減少 REDO。ALTER SESSION ENABLE PARALLEL DML + PARALLEL Hint/屬性,利用多 CPU。FORALL + BULK COLLECT 減少 Context Switch,SAVE EXCEPTIONS 處理錯誤。ALTER TABLE ... EXCHANGE PARTITION 秒級歸檔/載入歷史資料。V$SESSION_WAIT、V$LOCK、DBA_BLOCKERS、DBMS_LOCK 自訂鎖。CACHE/ORDER、全域暫存表。原文 12 張圖示涵蓋:
V$SQL 高負載 SQL (ELAPSED_TIME、BUFFER_GETS、EXECUTIONS)。DBMS_STATS.GATHER_DATABASE_STATS 或啟用自動收集作業。DBMS_REDEFINITION 流程並預演回滾。