前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【DB笔试面试670】在Oracle中,什么是SQL实时监控?

【DB笔试面试670】在Oracle中,什么是SQL实时监控?

作者头像
小麦苗DBA宝典
发布2019-10-30 11:21:47
7490
发布2019-10-30 11:21:47
举报

目部分

在Oracle中,什么是SQL实时监控?

答案部分

在Oracle 11g中,V$SESSION视图增加了一些新的字段,这其中包括SQL_EXEC_START和SQL_EXEC_ID,这两个字段实际上代表了Oracle 11g的一个新特性:实时的SQL监控(Real Time SQL Monitoring)。

在Oracle 11g中,当SQL并行执行时,会立即被实时监控到,或者当SQL单进程运行时,若消耗超过5秒的CPU或I/O时间,则它也会被监控到。另外,若使用/*+ monitor */提示的SQL语句,则也会被强制监控到。若使用/*+ no_monitor */提示的SQL语句则不会被监控到。监控数据被记录在V$SQL_MONITOR视图中,当然也可以通过Oracle 11g新增的包DBMS_MONITOR来主动对SQL执行监控部署。

V$SQL_MONITOR这个视图还记录了SQL的CPU_TIME以及BUFFER_GETS等重要信息,对于诊断SQL性能问题具有极大的帮助。结合V$SQL_MONITOR视图与V$SQL_PLAN_MONITOR视图可以进一步查询SQL的执行计划等信息。联合一些其它视图,如V$ACTIVE_SESSION_HISTORY、V$SESSION、V$SESSION_LONGOPS、V$SQL、V$SQL_PLAN等,可以获得关于SQL的更多信息。

V$SQL_MONITOR收集的信息每秒刷新一次,接近实时。当SQL执行完毕,信息并不会立即从V$SQL_MONITOR中删除,至少会保留1分钟。V$SQL_PLAN_MONITOR视图中的执行计划信息也是每秒更新一次,当SQL执行完毕,它们同样至少被保留1分钟。

实时SQL监控需要STATISTICS_LEVEL初始化参数设置为TYPICAL或ALL。同时CONTROL_MANAGEMENT_PACK_ACCESS参数必须是DIAGNOSTIC+TUNING(默认设置)。

可以使用如下的SQL获取文本格式的SQL报告:

代码语言:javascript
复制
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR('6rqxj647ut9pn') FROM DUAL ;

在有外网的情况下,可以通过如下的脚本获取HTML格式的报告:

代码语言:javascript
复制
SET LONG 1000000
SET LONGCHUNKSIZE 1000000
SET LINESIZE 1000
SET PAGESIZE 0
SET TRIM ONS
SET TRIMSPOOL ON
SET ECHO OFF
SET FEEDBACK OFF
SPOOL report_sql_monitor.htm
SELECT DBMS_SQLTUNE.REPORT_SQL_MONITOR(sql_id=>'6rqxj647ut9pn',type=>'ACTIVE',report_level=>'ALL') AS REPORT FROM DUAL;
SPOOL OFF

实时SQL监视通过HTML查看其监视报告时,具有更好的图形化的展示效果,它是基于Flash的展现,动态、图形画,让SQL的执行过程赏心悦目的展示出来,因此更加直观。如果监视的SQL语句发现具有全表扫描等执行计划的特征,或者CPU时间和I/O时间比较长,那么可以与SQL调优顾问接合起来,不但能获知性能瓶颈,而且能获得Oracle推荐的优化策略。

本文选自《Oracle程序员面试笔试宝典》,作者:小麦苗

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DB宝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档