首页 > 数据库技术 > 详细

利用sql_tuning_Advisor调优sql

时间:2019-08-22 09:12:45      阅读:107      评论:0      收藏:0      [点我收藏+]

1.赋权给调优用户

grant ADVISOR  to xxxxxx;

2.创建调优任务

使用sql_text创建

DECLARE
   my_task_name   VARCHAR2 (30);
   my_sqltext     CLOB;
BEGIN
   my_sqltext := select * from emp where ename= :name and DEPTNO= :deptno;
   my_task_name :=
      DBMS_SQLTUNE.
       CREATE_TUNING_TASK (
         sql_text      => my_sqltext,
         bind_list     => sql_binds (anydata.convertvarchar2 (10),
                                     anydata.convertnumber (2)),
         user_name     => TEST,
         scope         => COMPREHENSIVE,
         time_limit    => 300,
         task_name     => test_sql_tuning,
         description   => Task to tune a query on emp);
END;
/

使用sql_id进行创建

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

3.调整优化任务

--这里以调整调优任务时间为例
BEGIN
   DBMS_SQLTUNE.
    set_tuning_task_parameter (task_name   => my_sql_tuning_task,
                               parameter   => TIME_LIMIT,
                               VALUE       => 300);
END;

4.执行sql调优任务

BEGIN
   DBMS_SQLTUNE.EXECUTE_TUNING_TASK (task_name => test_sql_tuning);
END;
/

5.查看调优任务状态

SELECT status
  FROM USER_ADVISOR_TASKS
 WHERE task_name = test_sql_tuning;

6.查看调优任务结果

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

7.其他

查看数据库的sql_profile

SELECT * FROM DBA_SQL_PROFILES;

删除sql的sql_profile

exec dbms_sqltune.drop_sql_profile(SYS_SQLPROF_014b39f084c88000); 

 

利用sql_tuning_Advisor调优sql

原文:https://www.cnblogs.com/monkey6/p/11392264.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!