Oracle

在 Oracle 中使用 SQL 訪問顧問的技巧

  • February 19, 2014

請分享如何使用 oracle SQL 訪問顧問進行單個或多個查詢。您可以假設我們知道我們感興趣的查詢的 sql id。

就像是:

declare
task varchar2(30);

begin
task:= dbms_sqltune.CREATE_TUNING_TASK ( sql_id => '&sql_id',
plan_hash_value => '&hv' );
dbms_output.put_line (task);
dbms_sqltune.execute_tuning_task(task);
end;
/

讓工作執行。列出任務:

SELECT task_id, task_name, created, advisor_name, status
FROM dba_advisor_tasks
where TRUNC(created) = TRUNC(sysdate)
order by CREATEd desc;

準備好後,閱讀報告

SELECT DBMS_SQLTUNE.report_tuning_task('&tuning_task') AS recommendations FROM dual;

如果需要,請實施建議:

DECLARE
-- accept plan profile
 l_sql_tune_task_id  VARCHAR2(20);
BEGIN
 l_sql_tune_task_id := DBMS_SQLTUNE.accept_sql_profile (
                         task_name => '&tuning_task',
                         name      => '&profile');
 DBMS_OUTPUT.put_line('l_sql_tune_task_id: ' || l_sql_tune_task_id);
END;
/

閱讀這些軟體包會有很大幫助。

對於 SQL 訪問顧問,請查看Oracle 數據庫中的 SQL 訪問顧問

引用自:https://dba.stackexchange.com/questions/58938