查询当前数据库在10分钟后,每秒执行的次数

方法1:

可以出相关的awr报表 通过SQL ordered by Elapesed Time 计算sql语句在10分钟内平均执行的次数,当然,这需要你手动的每十分钟执行一次手动创建快照,也可以使用exec dbms_workload_repostiory.modify_snapshot_settings(interval=>10,retention=>20160),控制快照自动生成时间,以及保留时间。awr报表中 sql统计信息,大多是一下 dba_hist_sqlstat、dba_hist_nampshot 联合查询得出的结果,但是并不是所有的sql执行都会被awr产生的快照所获取到,因为awr报表出现的语句就执行计划而言是最差的语句,执行次数频繁,消耗dbtime较高的语句,所以通过快照计算在10分钟内平均执行次数有局限性的,但是可以大体估算。

 

ELAPSED_TIME_DELTA (字段值说明)    NUMBER           Delta value of elapsed time (in microseconds) used by this cursor for parsing/executing/fetching

EXECUTIONS_DELTA(字段值说明)    NUMBER           Delta number of executions that took place on this object since it was brought into the library cache

SQL> select sum(nvl(executions_delta,0)) execs,(sum(elapsed_time_delta)/1000000) sumelapsed,
  2  ((decode(sum(nvl(executions_delta,0)),0,1,sum(executions_delta)))/((sum(elapsed_time_delta)/1000000))) avg_etime
  3  from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
  4  where S.snap_id = SS.snap_id
  5  and S.instance_number = SS.instance_number
  6  and SS.begin_interval_time > to_date('2019-06-05 15:30:00','yyyy-mm-dd hh24:mi:ss')
  7  and SS.begin_interval_time < to_date('2019-06-05 18:30:00','yyyy-mm-dd hh24:mi:ss')
  8  and executions_delta > 0;

     EXECS SUMELAPSED  AVG_ETIME
---------- ---------- ----------
  32049087 219146.314 146.245157

select sum(nvl(executions_delta,0)) execs,(sum(elapsed_time_delta)/1000000) sumelapsed,lta)/1000000))) avg_etime
((decode(sum(nvl(executions_delta,0)),0,1,sum(executions_delta)))/((sum(elapsed_time_delta)/1000000))) avg_etime
  2    3  from DBA_HIST_SQLSTAT S, DBA_HIST_SNAPSHOT SS
  4  where S.snap_id = SS.snap_id
  5  and S.instance_number = SS.instance_number
  6  and SS.begin_interval_time > to_date('2019-06-05 18:20:00','yyyy-mm-dd hh24:mi:ss')
  7  and SS.begin_interval_time < to_date('2019-06-05 18:30:00','yyyy-mm-dd hh24:mi:ss')
  8  and executions_delta > 0
  9  ;

     EXECS SUMELAPSED  AVG_ETIME
---------- ---------- ----------


SQL>

例外:通过查询v$sqlarea或者v$sql相关的字段,来查看sql的执行次数,但是需要结合first_load_time 来判断的。这两个视图当中不保存历史数据,要查很久前的sql执行次数是做不到了,但是如果清空了共享池,对应的executions就会清零的。
select sql_id,sql_text,first_load_time,exectuions from v$sqlarea where sql_text like "------";

方法二:

使用视图v$sysstat,desc v$sysstat,,v$sysstat存储实例运行那刻起就开始累计全实例(instance-wide)的资源使用情况。

The CLASS column contains a number representing one or more statistics classes. The following class numbers are additive:

  • 1, User

  • 2, Redo

  • 4, Enqueue

  • 8, Cache

  • 16, OS

  • 32, Real Application Clusters

  • 64, SQL

  • 128, Debug

该视图中数据常被用于监控系统性能。如buffer cache命中率、软解析率等都可从该视图数据计算得出。该视图中的数据也被用于监控系统资源使用情况,以及系统资源利用率的变化。正因如此多的性能数据,检查某区间内系统资源使用情况可以这样做,在一个时间段开始时创建一个视图数据快照,结束时再创建一个,二者之间各统计项值的不同(end value - begin value)即是这一时间段内的资源消耗情况。

如果计算数据库在10秒内平均sql执行次数可以使用name中'execute count'、'stat_id',

execute count

64

Total number of calls (user and recursive) that executed SQL statements

STAT_ID

NUMBER

Identifier of the statistic

执行一下语句

select * from v$sysstat where name ='execute count'

 十分钟之后再执行一次,然后把stat_id的值相减,再除以600.后就是十分钟内每秒sql的执行次数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值