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

Oracle 19C 计划捕获

原创 Asher.HU 2021-02-04
1066


SQL计划捕获是指用于在一组SQL语句的SQL管理库中捕获和存储有关计划的相关信息的技术。

捕获计划意味着使SQL计划管理人员意识到该计划。您可以通过设置初始化参数将初始计划捕获配置为自动发生,也可以使用DBMS_SPM软件包手动捕获计划

本节包含以下主题:

 

27.3.1自动初始计划捕获

启用后,数据库将检查执行的SQL语句是否适合自动捕获。

您可以通过设置(默认值为来启用自动初始计划捕获请注意,初始化参数是独立的。例如,如果为is ,则数据库创建初始计划基线,而不管是否为is OPTIMIZER_CAPTURE_SQL_PLAN_BASELINEStruefalseOPTIMIZER_USE_SQL_PLAN_BASELINESOPTIMIZER_CAPTURE_SQL_PLAN_BASELINEStrueOPTIMIZER_USE_SQL_PLAN_BASELINEStruefalse

本节包含以下主题:

也可以看看:

 

27.3.1.1有资格获得自动初始计划

为了有资格进行自动计划捕获,已执行的语句必须是可重复的,并且不得被任何捕获过滤器排除。

默认情况下,数据库认为所有可重复的SQL语句都符合捕获条件,但以下情况除外:

  • CREATE TABLE指定 AS SELECT子句
  • DROP TABLE
  • INSERT INTO ... VALUES

资格的第一个检查是重复执行。如果语句执行少于两次,则数据库认为该语句不符合SQL计划基线。如果一条语句至少执行两次,那么根据定义它是可重复的,因此数据库认为它有资格进行进一步检查。

注意:

SQL计划管理不保护已使用解释EXPLAIN PLAN但尚未执行的语句

对于可重复的语句,该DBMS_SPM.CONFIGURE过程使您可以创建自动捕获过滤器因此,您可以仅捕获所需的语句,并排除非关键语句,从而节省SYSAUX表空间。非关键查询通常具有以下特征:

  • 没有足够频繁地执行就足够了
  • 不占用资源
  • 不够复杂,无法从SQL计划管理中受益

对于指定的参数,筛选器将包括(allow=>TRUE)或排除(allow=>FALSE)具有指定值的语句的计划。为了有资格被捕获,任何过滤器都不能排除可重复的语句DBMS_SPM.CONFIGURE过程支持用于SQL文本,解析模式名称,模块和操作的过滤器。

任何参数的null值都将删除过滤器。通过parameter_value=>'%'与结合使用allow=FALSE,您可以过滤出参数的所有值,然后创建一个单独的过滤器以仅包含指定的值。DBA_SQL_MANAGEMENT_CONFIG视图显示当前的过滤器。

也可以看看:

 

27.3.1.2自动匹配初始计划的计划匹配

如果数据库执行可重复的SQL语句,并且该语句通过DBMS_SPM.CONFIGURE过滤器,则数据库将尝试匹配SQL计划基线中的计划。

对于自动初始计划捕获,计划匹配算法如下:

  • 如果存在SQL计划基线,那么优化器将为该语句创建计划历史记录和SQL计划基线,将该语句的初始计划标记为已接受,并将其添加到SQL计划基线中。
  • 如果存在SQL计划基准,那么优化程序的行为取决于解析时派生的基于成本的计划:
    • 如果此计划与SQL计划基线中的计划匹配,则优化器会将新计划标记为不可接受,并将其添加到SQL计划基线中。
    • 如果这个计划匹配的SQL计划基准计划,再没有什么被添加到SQL计划基准。

 

27.3.2手动计划捕获

在SQL计划管理中,手动计划捕获是指用户启动的现有计划到SQL计划基线的批量加载。

使用Cloud Control或PL / SQL从AWRSQL调优集(STS)共享的SQL区域,登台表或存储的大纲中加载SQL语句的执行计划

图27-2将计划加载到SQL计划基准中


加载行为因批量加载中表示的每个语句是否存在SQL计划基准而有所不同:

  • 如果该语句的基准不存在,那么数据库将执行以下操作:
    1. 为报表创建计划历史记录和计划基线
    2. 将声明的初始计划标记为已接受
    3. 将计划添加到新基线
  • 如果存在该语句的基准,那么数据库将执行以下操作:
    1. 将加载的计划标记为已接受
    2. 将计划添加到报表的计划基线,而不验证计划的绩效

手动加载的计划始终被标记为“接受”,因为优化器假定管理员手动加载的任何计划都具有可接受的性能。您可以通过功能中将enabled参数设置为来加载计划而不启用它们NODBMS_SPM.LOAD_PLANS_FROM_%

也可以看看:

Oracle Database PL / SQL软件包和类型参考,以了解有关功能的 更多信息DBMS_SPM.LOAD_PLANS_FROM_%

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

评论