暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 19C 创建SQL调整任务

原创 Asher.HU 2021-02-04
676


要创建SQL调整任务,请执行该DBMS_SQLTUNE.CREATE_TUNING_TASK功能。

您可以通过以下任意方式创建调整任务:

  • 单个SQL语句的文本
  • 包含多个语句的SQL调优集
  • 由SQL标识符从共享SQL区域中选择的SQL语句
  • 由AWR的SQL标识符选择的SQL语句

scope参数是此功能最重要参数之一。您可以将此参数设置为以下值:

  • LIMITED

    SQL Tuning Advisor根据统计检查,访问路径分析和SQL结构分析产生建议。不会生成SQL配置文件建议。

  • COMPREHENSIVE

    SQL Tuning Advisor会在有限范围内加上SQL性能分析,执行其执行的所有分析。

假设条件

本教程假定以下内容:

  • 您想以hr具有ADVISOR特权的用户身份进行调优
  • 您要调整以下查询:
    SELECT /*+ ORDERED */ * 
    FROM   employees e, locations l, departments d
    WHERE  e.department_id = d.department_id 
    AND    l.location_id = d.location_id 
    AND    e.employee_id < :bnd;
    
  • 您要将绑定变量传递100给前面的查询。
  • 您希望SQL Tuning Advisor执行SQL分析。
  • 您希望任务运行不超过60秒。

要创建SQL调整任务:

  1. 使用适当的权限将SQL * Plus连接到数据库,然后运行该DBMS_SQLTUNE.CREATE_TUNING_TASK函数。

    例如,执行以下PL / SQL程序:

    DECLARE
      my_task_name VARCHAR2(30);
      my_sqltext   CLOB;
    BEGIN
      my_sqltext := 'SELECT /*+ ORDERED */ * '                      ||
                    'FROM employees e, locations l, departments d ' ||
                    'WHERE e.department_id = d.department_id AND '  ||
                          'l.location_id = d.location_id AND '      ||
                          'e.employee_id < :bnd';
    
      my_task_name := DBMS_SQLTUNE.CREATE_TUNING_TASK (
              sql_text    => my_sqltext
    ,         bind_list   => sql_binds(anydata.ConvertNumber(100))
    ,         user_name   => 'HR'
    ,         scope       => 'COMPREHENSIVE'
    ,         time_limit  => 60
    ,         task_name   => 'STA_SPECIFIC_EMP_TASK'
    ,         description => 'Task to tune a query on a specified employee'
    );
    END;
    /
    
  2. (可选)查询任务的状态。

    以下示例查询当前用户拥有的所有任务的状态,在本示例中为hr

    COL TASK_ID FORMAT 999999
    COL TASK_NAME FORMAT a25
    COL STATUS_MESSAGE FORMAT a33
    
    SELECT TASK_ID, TASK_NAME, STATUS, STATUS_MESSAGE
    FROM   USER_ADVISOR_LOG;
    

    输出示例如下:

    TASK_ID TASK_NAME                 STATUS      STATUS_MESSAGE
    ------- ------------------------- ----------- --------------
        884 STA_SPECIFIC_EMP_TASK     INITIAL
    

    在前面的输出中,INITIAL状态指示任务尚未开始执行。

也可以看看:

Oracle Database PL / SQL软件包和类型参考以了解该DBMS_SQLTUNE.CREATE_TUNING_TASK功能

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论