监控sql执行时剩余时间

--监控sql执行时剩余时间
你知道正在运行的sql大概需要多长时间么?
你知道正在运行的sql大概完成了百分之几么?
你知道正在运行的sql大概还要多长时间完成么?
V$SESSION_LONGOPS帮你忙。

V$SESSION_LONGOPS在<span style="font-family: Arial, Helvetica, sans-serif;">官方文档中的描述:</span>

V$SESSION_LONGOPS displays the status of various operations that run for longer than 6 seconds (in absolute time). These operations currently include many backup and recovery functions, statistics gathering, and query execution, and more operations are added for every Oracle release.

To monitor query execution progress, you must be using the cost-based optimizer and you must:

Set the TIMED_STATISTICS or SQL_TRACE parameters to true
Gather statistics for your objects with the DBMS_STATS package

--意义:
统计各个操作时间大于6s的语句

--前提条件:
基于成本的优化器cbo
TIMED_STATISTICS或SQL_TRACE为true
对象有统计信息

测试:

select * from v$version;
--Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

select * from v$parameter where name like '%timed_statistics%'
VALUE
TRUE

select last_analyzed from user_tables where table_name='LHJ_1G'
LAST_ANALYZED
2013-12-10 PM 01:19:36

--session1:
drop table t;
create table t as
select * from lhj_1g;

--session2:
select a.username,
       a.target,
       a.sid,
       a.SERIAL#,
       a.opname,
       round(a.sofar * 100 / a.totalwork, 0) || '%' as progress, --进度条
       time_remaining second, --剩余时间:秒
       trunc(a.time_remaining / 60, 2) minute,--剩余时间:分钟
       b.sql_text,
       b.LAST_ACTIVE_TIME
  from v$session_longops a, v$sqlarea b
 where a.time_remaining <> 0
   and a.sql_address = b.address
   and a.sql_hash_value = b.hash_value
   and a.username = 'GGS'

过一会再重复执行上面语句:

sql语句执行完成或者取消后,以上查询为空

时间: 2024-10-13 16:52:44

监控sql执行时剩余时间的相关文章

监控sql运行时剩余时间

--监控sql执行时剩余时间 你知道正在执行的sql大概须要多长时间么? 你知道正在执行的sql大概完毕了百分之几么? 你知道正在执行的sql大概还要多长时间完毕么? V$SESSION_LONGOPS帮你忙. V$SESSION_LONGOPS在<span style="font-family: Arial, Helvetica, sans-serif;">官方文档中的描写叙述:</span> V$SESSION_LONGOPS displays the st

Spring AOP监控SQL执行

对数据库连接池Proxool比较熟悉的读者,都知道Proxool可以记录SQL执行内容和时间等信息日志.我们可以将该日志记录专门的SQL日志文件,对于查找执行特别耗时的SQL起了不小的作用.对于一些其他连接池,没有该特性时,本文介绍Spring AOP切面方法来记录SQL日志. 当然也可以通过数据库提供的特性来查询执行效率较低的SQL,本文不做探讨. 本文介绍使用SpringJdbcTemplate执行SQL,使用其他方法或者ORM思路类似(Hibernate提供了日志记录功能). 使用AOP,

根据SQL执行时长来优化

1) 先清除缓存计划,注意生产环境谨慎使用此语句! dbcc freeProcCache 2) 再执行查询,系统使用等等 3) 查找执行最长的语句时间,可能需要执行多次来判断平均时间,代码如下: SELECT  creation_time  N'语句编译时间' ,last_execution_time  N'上次执行时间' ,total_physical_reads N'物理读取总次数' ,total_logical_reads/execution_count N'每次逻辑读次数' ,total

应用Druid监控SQL语句的执行情况

Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource. Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验. 同时Druid不仅仅是一个数据库连接池,它包括四个部分:Druid是一个JDBC组件,它包括三个部分: 基于Filter-Chain模式的插件体系. DruidDataSource

SQL监控:mysql及mssql数据库SQL执行过程监控审计

最近生活有很大的一个变动,所以博客也搁置了很长一段时间没写,好像写博客已经成了习惯,搁置一段时间就有那么点危机感,心里总觉得不自在.所以从今天起还是要继续拾起墨笔(键盘),继续好好维护这个博客,写出心里最真实的想法,写出平时接触到的一些人和事以及一些新的技术.当然写博客也不是单纯的为了记录,也想通过博客来结交更多的朋友,今天在公司图书馆看到一句话大致说的是“在今天这个年代,已经很难等到三顾茅庐,诸葛亮也需要博客.微博和影响力”,在一年前就曾想过写一篇关于怎样通过博客来提高个人影响力的文章,我会尽

监控mysql执行的sql语句

linux平台 为了做好配合开发做性能和功能测试,方便监控正在执行的sql语句,可以在/etc/mysqld中添加如下: log =/usr/local/mysql/var21005/mysql.log 就可以使用: tail -f mysql.log 来监控了  www.xxx.com 如果需要监控慢查询可以添加如下内容: log-slow-queries = /usr/local/mysql/var21005/slowquery.log long_query_time = 1 windows

应用Druid监控SQL语句的执行情况(转)

Druid是什么? Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBoss DataSource. Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验. 同时Druid不仅仅是一个数据库连接池,它包括四个部分:Druid是一个JDBC组件,它包括三个部分: 基于Filter-Chain模式的插件体系. DruidDataSource

设置 sqlserver Profiler 只监控 EF的sql执行请求

当我们用EF执行语句的时候,可以使用 sqlserver Profiler来监控到底执行了哪些sql语句,但是默认他是监控全局的,我们只想监控Ef的语句,这里如下设置 这样就只会监控 EF产生的 sql语句了 设置 sqlserver Profiler 只监控 EF的sql执行请求

Python连接MySQL数据库执行sql语句时的参数问题

由于工作需要,今天写了一个Python小脚本,其中需要连接MySQL数据库,在执行sql命令时需要传递参数,结果出问题了.在网上查了一下,发现有以下几种方式传递参数: 一.直接把sql查询语句完整写入字符串 try: connection = MySQLdb.connect(user="secsel",passwd="[email protected]",host="192.168.138.55",db="anbench")