工作负载由一个或多个SQL语句以及完全描述每个语句的统计信息和属性组成。
完整的工作负载包含目标业务应用程序中的所有SQL语句。部分工作负载包含SQL语句的子集。区别在于,对于完整的工作负载,SQL Access Advisor可能建议删除未使用的实例化视图和索引。
没有工作负载,就无法使用SQL Access Advisor。SQL Access Advisor根据特定的统计信息,业务重要性或两者的组合对条目进行排名,这使Advisor可以首先处理最重要的SQL语句。
SQL Access Advisor在基于实际使用情况的工作负载下表现最佳。您可以采用SQL调优集的形式存储多个工作负载,以便可以在数据库实例启动和关闭的整个生命周期中,长期查看实际数据仓库或OLTP环境的不同用途。
下表描述了可用于用用户定义的工作负荷填充STS的过程。
表25-1加载STS的过程
程序 | 描述 | 了解更多 |
---|---|---|
或 | 使用一组选定的SQL填充SQL调整集。您可以多次调用该过程以添加新的SQL语句或替换现有语句的属性。 | Oracle数据库PL / SQL软件包和类型参考 |
| 将SQL工作负载数据复制到用户指定的SQL调整集中。用户必须具有所需的SQL调优设置特权和所需的 | Oracle数据库PL / SQL软件包和类型参考 |
假设条件
本教程假定您要执行以下操作:
- 创建一个表以
sh.user_workload
存储有关SQL语句的信息 sh.user_workload
使用有关sh
架构 中表的三个查询的信息加载表- 填充中创建的STS “ 创建SQL调优集作为输入的SQL访问顾问 ”中包含的工作量
sh.user_workload
- 使用
DBMS_SQLTUNE.LOAD_SQLSET
代替DBMS_SQLSET.LOAD_SQLSET
要用用户定义的工作量填充STS:
- 在SQL * Plus中,以user身份登录数据库
sh
。 - 创建
user_workload
表。例如,输入以下命令:
DROP TABLE user_workload; CREATE TABLE user_workload ( username varchar2(128), /* User who executes statement */ module varchar2(64), /* Application module name */ action varchar2(64), /* Application action name */ elapsed_time number, /* Elapsed time for query */ cpu_time number, /* CPU time for query */ buffer_gets number, /* Buffer gets consumed by query */ disk_reads number, /* Disk reads consumed by query */ rows_processed number, /* # of rows processed by query */ executions number, /* # of times query executed */ optimizer_cost number, /* Optimizer cost for query */ priority number, /* User-priority (1,2 or 3) */ last_execution_date date, /* Last time query executed */ stat_period number, /* Window exec time in seconds */ sql_text clob /* Full SQL Text */ );
复制 user_workload
用有关查询的信息加载表。例如,执行以下语句:
-- aggregation with selection INSERT INTO user_workload (username, module, action, priority, sql_text) VALUES ('SH', 'Example1', 'Action', 2, 'SELECT t.week_ending_day, p.prod_subcategory, SUM(s.amount_sold) AS dollars, s.channel_id, s.promo_id FROM sales s, times t, products p WHERE s.time_id = t.time_id AND s.prod_id = p.prod_id AND s.prod_id > 10 AND s.prod_id < 50 GROUP BY t.week_ending_day, p.prod_subcategory, s.channel_id, s.promo_id') / -- aggregation with selection INSERT INTO user_workload (username, module, action, priority, sql_text) VALUES ('SH', 'Example1', 'Action', 2, 'SELECT t.calendar_month_desc, SUM(s.amount_sold) AS dollars FROM sales s , times t WHERE s.time_id = t.time_id AND s.time_id BETWEEN TO_DATE(''01-JAN-2000'', ''DD-MON-YYYY'') AND TO_DATE(''01-JUL-2000'', ''DD-MON-YYYY'') GROUP BY t.calendar_month_desc') / -- order by INSERT INTO user_workload (username, module, action, priority, sql_text) VALUES ('SH', 'Example1', 'Action', 2, 'SELECT c.country_id, c.cust_city, c.cust_last_name FROM customers c WHERE c.country_id IN (52790, 52789) ORDER BY c.country_id, c.cust_city, c.cust_last_name') / COMMIT;
复制- 执行一个PL / SQL程序,用
user_workload
表中的行填充游标,然后将该游标的内容加载到名为的STS中MY_STS_WORKLOAD
。例如,执行以下PL / SQL程序:
DECLARE sqlset_cur DBMS_SQLTUNE.SQLSET_CURSOR; BEGIN OPEN sqlset_cur FOR SELECT SQLSET_ROW(null,null, SQL_TEXT, null, null, 'SH', module, 'Action', 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, null, 2, 3, sysdate, 0, 0, null, 0, null, null) FROM USER_WORKLOAD; DBMS_SQLTUNE.LOAD_SQLSET('MY_STS_WORKLOAD', sqlset_cur); END; /
复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle Concepts(Oracle 19c):07 SQL
Ryan Bai
1050次阅读
2025-04-09 10:57:11
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
653次阅读
2025-04-18 14:18:38
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
624次阅读
2025-04-15 17:24:06
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
529次阅读
2025-04-20 10:07:02
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
524次阅读
2025-04-08 09:12:48
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
479次阅读
2025-04-22 00:20:37
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
475次阅读
2025-04-17 17:02:24
Oracle 19c RAC更换IP实战,运维必看!
szrsu
456次阅读
2025-04-08 23:57:08
一页概览:Oracle GoldenGate
甲骨文云技术
454次阅读
2025-04-30 12:17:56
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
449次阅读
2025-04-22 00:13:51