Oracle 10g 引入的顧問框架是性能調優的利器,其中 SQL Access Advisor(SQL 訪問顧問) 專注於索引與物化視圖優化建議。10gR2 更簡化了調用介面,本文演示從調用到落地的完整流程。
QUICK_TUNE 過程,一鍵完成任務創建、參數配置、負載構建-- 單條 SQL 直接調優
EXEC DBMS_ADVISOR.QUICK_TUNE(
advisor_name => 'SQL Access Advisor',
task_name => 'MY_TUNE_TASK',
sql_text => 'SELECT * FROM sales WHERE amount_sold > 1000'
);
| 視圖 | 用途 |
|---|---|
| DBA_ADVISOR_LOG | 任務執行日誌、建議數量統計 |
| DBA_ADVISOR_RECOMMENDATIONS | 具體優化建議(如創建位圖索引) |
| DBA_ADVISOR_ACTIONS | 單條可執行 DDL 命令 |
-- 獲取完整實施腳本 (CLOB)
SELECT DBMS_ADVISOR.GET_TASK_SCRIPT('MY_TUNE_TASK') FROM DUAL;
針對 WHERE amount_sold > 1000 查詢,Advisor 偵測到:
AMOUNT_SOLD 列重複值多,推薦位圖索引CREATE BITMAP INDEX ... DDL批量分析多條 SQL 時,先創建 Workload:
EXEC DBMS_ADVISOR.CREATE_SQLWKLD('MY_WORKLOAD');
-- 從 AWR/共享游標/用戶表導入 SQL
EXEC DBMS_ADVISOR.IMPORT_SQLWKLD(...);
-- 執行綜合調優
EXEC DBMS_ADVISOR.EXECUTE_TASK('MY_TASK');