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

Oracle 19C 删除SQL计划基准

原创 Asher.HU 2021-02-04
1301


您可以从SQL计划基准中删除部分或全部计划。在测试SQL计划管理时,此技术有时很有用。

使用该DBMS_SPM.DROP_SQL_PLAN_BASELINE功能放置计划此函数返回已删除计划的数量。下表描述了输入参数。

表28-11 DROP_SQL_PLAN_BASELINE参数

功能参数描述

sql_handle

SQL语句标识符。

plan_name

特定计划的名称。Default NULL删除与标识的SQL语句关联的所有计划sql_handle

本节说明如何从命令行删除基线。在Cloud Control中,从SQL Plan Baseline子页面中选择一个计划,然后单击Drop

本教程假定您要删除以下SQL语句的所有计划,从而有效地删除SQL计划基准:

SELECT /* repeatable_sql */ COUNT(*) FROM hr.jobs;

删除SQL计划基准:

  1. 使用适当的特权将SQL * Plus连接到数据库,然后在数据字典中查询计划基准。

    以下语句查询DBA_SQL_PLAN_BASELINES(包括示例输出):

    SQL> SELECT SQL_HANDLE, SQL_TEXT, PLAN_NAME, ORIGIN,
      2         ENABLED, ACCEPTED
      3  FROM   DBA_SQL_PLAN_BASELINES
      4  WHERE  SQL_TEXT LIKE 'SELECT /* repeatable_sql%';
     
    SQL_HANDLE           SQL_TEXT             PLAN_NAME                      ORIGIN         ENA ACC
    -------------------- -------------------- ------------------------------ -------------- --- ---
    SQL_b6b0d1c71cd1807b SELECT /* repeatable SQL_PLAN_bdc6jswfd303v2f1e9c20 AUTO-CAPTURE   YES YES
                         _sql */ count(*) fro
                         m hr.jobs
    
  2. 删除该语句的SQL计划基线。

    以下示例使用SQL handle删除计划基准SQL_b6b0d1c71cd1807b,并返回删除的计划数。使用计划名称(plan_name),SQL句柄(sql_handle)或任何其他计划条件指定计划基准table_name参数是强制性的。

    DECLARE
      v_dropped_plans number;
    BEGIN
      v_dropped_plans := DBMS_SPM.DROP_SQL_PLAN_BASELINE (
         sql_handle => 'SQL_b6b0d1c71cd1807b'
    );
      DBMS_OUTPUT.PUT_LINE('dropped ' || v_dropped_plans || ' plans');
    END;
    /
    
  3. 确认计划已删除。

    例如,执行以下查询:

    SELECT SQL_HANDLE, SQL_TEXT, PLAN_NAME, ORIGIN,
           ENABLED, ACCEPTED
    FROM   DBA_SQL_PLAN_BASELINES
    WHERE  SQL_TEXT LIKE 'SELECT /* repeatable_sql%';
     
    no rows selected

也可以看看:

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

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

评论