要使用SQL语句加载STS,请使用或包中的LOAD_SQLSET过程。 DBMS_SQLTUNEDBMS_SQLSET
填充STS的标准源是AWR,另一个STS或共享SQL区域。对于工作负载存储库和SQL调整集,预定义的表函数可以从源中选择列以填充新的STS。
下表描述了一些DBMS_SQLTUNE.LOAD_SQLSET过程参数。
表23-3 DBMS_SQLTUNE.LOAD_SQLSET参数
| 参数 | 描述 |
|---|---|
| 指定从中填充STS的光标参考。 |
| 指定如何将语句加载到STS中。可能的值为 |
该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_CACHE和LOAD_SQLSET过程更有效。与AWR(仅捕获高负载SQL语句或LOAD_SQLSET过程(仅访问数据源一次)的工作负载)相反,此功能有效地捕获了整个工作负载。
先决条件
本教程具有以下先决条件:
- 提供给
SELECT_CURSOR_CACHE函数的过滤器将作为当前用户运行的SQL语句的一部分进行评估。这样,它们将以该用户的安全性特权执行,并且可以包含用户可以访问但不能再访问的任何构造和子查询。 - 当前用户必须对共享SQL区域视图具有特权。
假设条件
本教程假定以下内容:
- 您
SQLT_WKLD_STS要从共享SQL区域中加载以语句命名的SQL优化集。 - 您要使用
DBMS_SQLTUNE而不是DBMS_SQLSET加载STS。
加载STS:
- 在SQL * Plus或SQL Developer中,以具有必要特权的用户身份登录数据库。
- 运行
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




