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

Oracle 19C 加载SQL优化集

原创 Asher.HU 2021-02-04
563


要使用SQL语句加载STS,请使用包中LOAD_SQLSET过程 DBMS_SQLTUNEDBMS_SQLSET

填充STS的标准源是AWR,另一个STS或共享SQL区域。对于工作负载存储库和SQL调整集,预定义的表函数可以从源中选择列以填充新的STS。

下表描述了一些DBMS_SQLTUNE.LOAD_SQLSET过程参数。

表23-3 DBMS_SQLTUNE.LOAD_SQLSET参数

参数描述

populate_cursor

指定从中填充STS的光标参考。

load_option

指定如何将语句加载到STS中。可能的值为INSERT(默认值)UPDATE,和MERGE

DBMS_SQLTUNE.SELECT_CURSOR_CACHE函数根据指定的过滤器从共享SQL区域收集SQL语句。此函数针对每个数据源中找到的每个SQLSET_ROWSQL ID或PLAN_HASH_VALUE返回一个

使用DBMS_SQLTUNE.CAPTURE_CURSOR_CACHE_SQLSET函数(或等效函数DBMS_SQLSET.CAPTURE_CURSOR_CACHE)在指定间隔内重复轮询共享SQL区域。此函数比重复调用SELECT_CURSOR_CACHELOAD_SQLSET过程更有效与AWR(仅捕获高负载SQL语句或LOAD_SQLSET过程(仅访问数据源一次)的工作负载)相反,此功能有效地捕获了整个工作负载

先决条件

本教程具有以下先决条件:

  • 提供给SELECT_CURSOR_CACHE函数的过滤器将作为当前用户运行的SQL语句的一部分进行评估。这样,它们将以该用户的安全性特权执行,并且可以包含用户可以访问但不能再访问的任何构造和子查询。
  • 当前用户必须对共享SQL区域视图具有特权。

假设条件

本教程假定以下内容:

  • SQLT_WKLD_STS要从共享SQL区域中加载以语句命名的SQL优化集
  • 您要使用DBMS_SQLTUNE而不是DBMS_SQLSET加载STS。


加载STS:

  1. 在SQL * Plus或SQL Developer中,以具有必要特权的用户身份登录数据库。
  2. 运行DBMS_SQLTUNE.LOAD_SQLSET过程。

    例如,执行以下PL / SQL程序,以使用属于该sh架构的所有游标缓存语句填充SQL调整集

    DECLARE
      c_sqlarea_cursor DBMS_SQLTUNE.SQLSET_CURSOR;
    BEGIN
     OPEN c_sqlarea_cursor FOR
       SELECT VALUE(p)
       FROM   TABLE( 
                DBMS_SQLTUNE.SELECT_CURSOR_CACHE(
                ' module = ''SQLT_WKLD'' AND parsing_schema_name = ''SH'' ')
              ) p;
    -- load the tuning set
      DBMS_SQLTUNE.LOAD_SQLSET (  
        sqlset_name     => 'SQLT_WKLD_STS'
    ,   populate_cursor =>  c_sqlarea_cursor 
    );
    END;
    /

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

评论