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

Oracle 19C 执行Optimizer Statistics Advisor任务

原创 Asher.HU 2021-02-04
716


DBMS_STATS.EXECUTE_ADVISOR_TASK函数为Optimizer Statistics Advisor执行任务。如果未指定执行名称,则Optimizer Statistics Advisor会自动生成一个。

执行此任务的结果取决于执行用户的特权:

  • SYSTEM 水平

    只有同时具有ANALYZE ANYANALYZE ANY DICTIONARY特权的用户才能在系统级规则上执行此任务。

  • 操作水平

    结果取决于以下特权:

    • 同时具有ANALYZE ANYANALYZE ANY DICTIONARY特权的用户可以执行所有统计信息操作的任务。
    • 与用户的ANALYZE ANY特权,但没有ANALYZE ANY DICTIONARY权限的用户可以执行此任务相关的任何除统计模式操作SYS
    • 与用户的ANALYZE ANY DICTIONARY特权,但没有ANALYZE ANY权限的用户可以执行此任务相关自己的架构和统计业务SYS架构。
    • ANALYZE ANY没有ANALYZE ANY DICTIONARY特权又没有特权的用户只能对与自己的架构有关的统计信息操作执行此操作。
  • 对象级别

    用户可以对具有统计信息收集特权的任何对象执行此任务。

先决条件

此任务具有以下先决条件:

  • 要执行此子程序,您必须具有ADVISOR特权。
  • 您必须是任务的所有者。
  • 如果指定执行名称,则该名称不得与现有执行冲突。

注意:

该子程序使用调用者的权限执行。


要执行Optimizer Statistics Advisor任务:

  1. 在SQL * Plus或SQL Developer中,以具有必要特权的用户身份登录数据库。
  2. DBMS_STATS.EXECUTE_ADVISOR_TASK以以下形式执行该函数,其中tname任务execname名称,执行的可选名称和ret包含返回的输出的变量:
    EXECUTE ret := DBMS_STATS.EXECUTE_ADVISOR_TASK('tname','execname');

    例如,要执行任务opt_adv_task1,请使用以下代码:

    DECLARE
      v_tname VARCHAR2(32767);
      v_ret   VARCHAR2(32767);
    BEGIN
      v_tname := 'opt_adv_task1';
      v_ret := DBMS_STATS.EXECUTE_ADVISOR_TASK(v_tname);
    END;
    /
    
  3. (可选)通过查询获取有关执行的详细信息USER_ADVISOR_EXECUTIONS
    SELECT TASK_NAME, EXECUTION_NAME,
           EXECUTION_END, EXECUTION_TYPE AS TYPE, STATUS 
    FROM   USER_ADVISOR_EXECUTIONS;

    输出示例如下:

    TASK_NAME       EXECUTION_NAME       EXECUTION TYPE       STATUS
    --------------- -------------------- --------- ---------- -----------
    OPT_ADV_TASK1   EXEC_136             23-NOV-15 STATISTICS COMPLETED
    

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

评论