SQL 监控是根据特定 SQL 的多次执行或特定执行中收集的监控信息,来对系统的性能问题作出诊断。SQL 相关的监控信息,主要从 SQL 请求维度和执行计划维度记录实际执行过程中的相关信息。主要的SQL监控工具如下:
- (g)v$sql_audit
(g)v$sql_audit是基于虚拟表__all_virtual_sql_audit的视图, 该虚拟表对应的数据存放在一个可配置的内存空间中,能够记录并显示每一次SQL请求的来源、执行状态及统计信息,具体机制及说明见sql_audit 介绍,基于(g)v$sql_audit可以查看每次请求客户端来源,执行server信息,执行状态信息,等待事件及执行各阶段耗时等。通过gv$sql_audit可以分析RT突然抖动原因、分析查询中等待事件、查看集群SQL请求流量是否均衡等等,更多可参见SQL诊断分析举例
- Plan Cache相关视图
Plan Cache相关视图包含记录执行计划的缓存状态、执行统计的相关信息及计划信息,这些视图的数据均来自Plan Cache,具体Plan Cache介绍见执行计划缓存介绍。Plan Cache相关视图主要有:
- (g)v$plan_cache_stat:记录每个计划缓存的状态,每个计划缓存在该视图中有一条记录
- (g)v$plan_cache_plan_stat :记录计划缓存中所有plan的具体信息及每个计划总的执行统计信息, 每个plan在该视图中一条记录
(g)v$plan_cache_plan_explain : 记录某条SQL在计划缓存中的执行计划通过执行执行计划相关视图可以分析耗时TOP N的SQL、查看执行计划形状等。
SQL Trace
SQL Trace能够交互式的提供上一次执行的SQL请求执行过程信息及各阶段的耗时。具体说明及使用示例见[SQL Trace](SQL Trace)一节。