使用DBMS_SQLTUNE优化单个SQL

使用DBMS_SQLTUNE优化单个SQL

##快速上手版##

#1 创建一个优化任务

根据问题SQL的SQL_ID号创建一个优化任务


DECLARE
 my_task_name VARCHAR2(30);
BEGIN
  my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK(
         SQL_ID      => '17rsyf2zcmpcw',
         scope       => 'COMPREHENSIVE',
         time_limit  => 3600,
         task_name   => 'tunning_task_ddw7j6yfnw0vz',
         description => 'Task to tune a query on  17rsyf2zcmpcw');
END;
/

#2 查询优化任务
SELECT TASK_NAME
FROM   DBA_ADVISOR_LOG
WHERE task_name='tunning_task_ddw7j6yfnw0vz'


#3 执行优化任务
BEGIN
  DBMS_SQLTUNE.EXECUTE_TUNING_TASK( task_name => 'tunning_task_ddw7j6yfnw0vz' );
END;
/

#4 检查优化任务状态
SELECT status
FROM   USER_ADVISOR_TASKS
WHERE  task_name = 'tunning_task_ddw7j6yfnw0vz';

#5 查看优化结果

SET LONG 10000;
SET LONGCHUNKSIZE 1000;
SET LINESIZE 100;
SELECT DBMS_SQLTUNE.REPORT_TUNING_TASK('tunning_task_ddw7j6yfnw0vz') FROM   DUAL;

#6 修改优化任务
--sql tunning任务创建后,也可以修改参数
BEGIN
   DBMS_SQLTUNE.SET_TUNING_TASK_PARAMETER(
    task_name => 'tunning_task_ddw7j6yfnw0vz',
    parameter => 'TIME_LIMIT', value => 1800);
END;
/
#7 删除优化任务
EXEC DBMS_SQLTUNE.DROP_TUNING_TASK('tunning_task_ddw7j6yfnw0vz');

posted @ 2021-06-24 17:40  oldoldman(OOM)  阅读(340)  评论(0)    收藏  举报