千家信息网

oracle中v$sql_monitor如何监视正在运行的SQL语句的统计信息

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关oracle中v$sql_monitor如何监视正在运行的SQL语句的统计信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。11g中引入
千家信息网最后更新 2026年10月31日oracle中v$sql_monitor如何监视正在运行的SQL语句的统计信息

这篇文章将为大家详细讲解有关oracle中v$sql_monitor如何监视正在运行的SQL语句的统计信息,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

11g中引入了新的动态性能视图V$SQL_MONITOR,该视图用以显示Oracle监视的SQL语句信息。SQL监视会对那些并行执行或者消耗5秒以上cpu时间或I/O时间的SQL语句自动启动,同时在V$SQL_MONITOR视图中产生一条记录。当SQL语句正在执行,V$SQL_MONITOR视图中的统计信息将被实时刷新,频率为每秒1次。SQL语句执行完成后,监视信息将不会被立即删除,Oracle会保证相关记录保存一分钟(由参数_sqlmon_recycle_time所控制,默认为60s),最终这些记录都会被删除并被重用。这一新的SQL性能监视特性仅在CONTROL_MANAGEMENT_PACK_ACCESS为DIAGNOSTIC+TUNING和STATISTICS_LEVEL为ALL|TYPICAL时被启用。

v$sql_monitor视图包含当前正在运行的SQL语句,以及最近运行的SQL语句。

使用v$sql_monitor视图中所监控的SQL语句时需在满足以下条件:
1) 自动监控任何并行语句
2) 如果一个SQL语句消耗了超过5秒的CPU或I/O时间,则会自动监控
3) 监控任何在语句级启用监控的SQL语句(使用monitor或no_monitor)

提示:结合v$sql_monitor视图与v$sql_plan_monitor视图可以进一步查询SQL的执行计划等信息。联合一些其他视图,如v$active_session_history、v$session、v$session_longops、v$sql、v$sql_plan等,可以获得关于SQL的更多信息。

注意:为了进行SQL监控,初始化参数STATISTICS_LEVEL必须设置为TYPICAL或ALL,CONTROL_MANAGEMENT_PACK_ACCESS必须设置为DIAGNOSTIC+TUNING。

SQL> show parameter STATISTICS_LEVE
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
statistics_level string TYPICAL

SQL> show parameter CONTROL_MANAGEMENT_PACK_ACCESS
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
control_management_pack_access string DIAGNOSTIC+TUNING

1、 如查看数据库中消耗CPU资源排名前10位的查询:

select * from (
select sql_id,username,to_char(sql_exec_start,'yyyy-mm-dd hh34:mi:ss') sql_exec_start,
sql_exec_id,sum(buffer_gets) buffer_gets,
sum(disk_reads) disk_reads,round(sum(cpu_time/1000000),1) cpu_secs
from v$sql_monitor
where username not in ('SYS','SYSTEM')
group by sql_id,username,sql_exec_start,sql_exec_id
order by 7 desc)
where rownum<=10;


SQL_ID USERNAME SQL_EXEC_START SQL_EXEC_ID BUFFER_GETS DISK_READS CPU_SECS
------------- ------------------------------ ------------------- ----------- ----------- ---------- ----------
8p8ann3c68vxc SCOTT 2016-11-24 09:50:20 16777216 0 0 37.1


2、监控指定的SQL语句:
2.1、 Hint提示监控指定的SQL语句
select /*+ monitor */e.empno,e.ename,e.sal,d.dname from scott.emp e,scott.dept d where e.deptno=d.deptno;

2.2、v$sql_monitor视图中查看被监控的SQL语句消耗的资源信息:

select sql_id,username,to_char(sql_exec_start,'yyyy-mm-dd hh34:mi:ss') sql_exec_start,
sql_exec_id,sum(buffer_gets) buffer_gets,
sum(disk_reads)disk_reads,round(sum(cpu_time/1000000),1) cpu_secs
from v$sql_monitor
where sql_text like '%monitor%'
group by sql_id,username,sql_exec_start,sql_exec_id;

2.3、 然后可以使用DBMS_SQLTUNE包来查看SQL语句生成的监控信息(如执行计划等):
SQL>
set long 10000000
set longchunksize 10000000
set linesize 200
select dbms_sqltune.report_sql_monitor from dual;

关于"oracle中v$sql_monitor如何监视正在运行的SQL语句的统计信息"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

语句 视图 监控 信息 监视 正在 运行 消耗 统计 时间 更多 篇文章 参数 性能 资源 提示 查询 不错 实用 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海喔噻互联网科技有限公司 互联网科技工作委员会毛军 深圳恒合互联网络科技有限公司 智网互联网科技 天津摩尔互联网科技 奇士达互联网科技 西安互联网科技公司 富国互联网科技创新基金 宝灵互联网科技有限公司 长沙茂晟互联网科技有限公司 徐州市互联网科技有限公司 滨湖区互联网智能科技产品有哪些 北京市互联网新科技 城市宝互联网科技有限公司 福州德业互联网科技 万物互联网智能科技 互联网科技博主张洲 科技互联网专业务虚会材料 科技互联网企业在行动 广州全民伙伴互联网科技有限公司 互联网属科技 互联网科技公司怎么样 上海致骋互联网科技 中化能源互联网科技招聘 南博望互联网科技有限公司 上海京穆互联网科技有限公司 伍佰万互联网科技怎么赚钱 互联网硬科技公司 科技互联网行业投资研究 盐城市攀科互联网科技有限公司
0