默认情况下,AWR自动捕获XML格式的SQL监视报告。
报告仅捕获自上一个捕获周期以来未执行或未排队且已完成执行的SQL语句。AWR根据经过的执行时间仅捕获最昂贵的语句的报告。SQL Monitor保留策略由AWR策略控制。您可以使用以下DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS步骤更改保留策略。
企业管理器云控制(Cloud Control)中的“监视的SQL执行”页面总结了监视语句的活动。您可以使用此页面向下钻取并获取有关特定语句的其他详细信息。“监视的SQL执行详细信息”页面使用来自多个视图的数据,包括以下数据:
GV$SQL_MONITORGV$SQL_PLAN_MONITORGV$SQL_MONITOR_SESSTATGV$SQLGV$SQL_PLANGV$ACTIVE_SESSION_HISTORYGV$SESSION_LONGOPSDBA_HIST_REPORTSDBA_HIST_REPORTS_DETAILS
注意:
在启动Oracle数据库19c中,Oracle数据库包括无证V$视图使数据库用户没有在SELECT_CATALOG_ROLE看到会话中执行简单的数据库操作计划和统计(独立的SQL和PL / SQL语句)。没有的用户SELECT_CATALOG_ROLE无法查看其他用户的SQL执行统计信息和详细信息。
假设条件
本教程假定以下内容:
- 用户
sh正在执行以下针对每个客户的销售的长期并行查询:SELECT c.cust_id, c.cust_last_name, c.cust_first_name, s.prod_id, p.prod_name, s.time_id FROM sales s, customers c, products p WHERE s.cust_id = c.cust_id AND s.prod_id = p.prod_id ORDER BY c.cust_id, s.time_id; - 您要确保前面的查询不会消耗过多的资源。在执行该语句时,您需要确定有关数据库操作的基本统计信息,例如并行度,数据库总时间和I / O请求数。
- 您使用云控制来监视语句执行。
注意:
要从命令行生成SQL监视器报告,请像下面的示例SQL * Plus脚本中那样运行程序包中的
REPORT_SQL_MONITOR函数DBMS_SQLTUNE:VARIABLE my_rept CLOB BEGIN :my_rept :=DBMS_SQLTUNE.REPORT_SQL_MONITOR(); END; / PRINT :my_rept
监视SQL执行:
- 进入监控的SQL执行页面,如在“ 监控的SQL执行页云控制 ”。
在下图中,第一行显示了并行查询。
在此示例中,查询已执行1.4分钟。
- 单击“ SQL ID”列中的值以查看有关该语句的详细信息。
将显示“监视的SQL详细信息”页面。
上一个报告显示了执行计划和与语句执行有关的统计信息。例如,“时间轴”列显示执行计划的每个步骤何时处于活动状态。显示的时间相对于语句执行的开始和结束。“执行”列显示了执行一次操作的次数。
- 在“概述”部分中,单击SQL文本旁边的链接。
将显示一条消息,显示SQL语句的全文。
- 在“时间和等待统计信息”部分中的“数据库时间”旁边,将光标移到条形图的最大部分上。
一条消息表明用户I / O正在消耗数据库时间的一半以上。
数据库时间用于衡量数据库处理该SQL语句所花费的时间。该值包括CPU和等待时间,例如I / O时间。条形图分为几个颜色部分,以突出显示CPU资源,用户I / O资源和其他资源。您可以将光标移到任何部分上以查看总计的百分比值。
- 在“详细信息”部分的“ IO请求”列中,将光标移到“ I / O请求”栏上以查看总数的百分比值。
出现一条信息。
在上图中,“ IO请求”消息显示了受监视的SQL发出的读取请求的总数。该消息显示读取请求占I / O请求总数的80%。
也可以看看:
- Cloud Control联机帮助,用于“监视的SQL执行详细信息”页面上的元素的描述,以及报告中所有统计信息的完整描述。
- Oracle数据库参考,以了解有关
V$SQL_MONITOR数据库操作监视的视图及其相关视图 - 为什么使用SQL Monitor播放演示“受监控的SQL详细信息”报告的有用功能的视频




