ITPub博客

首页 > 数据库 > Oracle > 数据库 SQL执行时长

数据库 SQL执行时长

原创 Oracle 作者:Haoword_wang 时间:2023-09-01 19:52:18 0 删除 编辑

生产中,业务常常会反馈在历史中的某一个时间点业务慢,怀疑SQL执行慢,这时我们可以数据库中历史视图DBA_HIST_ACTIVE_SESS_HISTORY 来确认。下面我们介绍一下该SQL 涉及的视图数据来由依此理解后面的解释。

第一:DBA_HIST_ACTIVE_SESS_HISTORY 该视图数据来自于V$ACTIVE_SESSION_HISTORY,数据库会每10秒从该视图收集一次数据存放到DBA_HIST_ACTIVE_SESS_HISTORY视图中。

第二:V$ACTIVE_SESSION_HISTORY 它包含每秒生产一次的活动数据库会话快照,每秒是数据库默认值,由参数_ash_sampling_interval 设置,单位毫秒,默认 1000。如果数据库会话位于CPU上或正在等待不属于Idle等待类的事件,则该会话被认为是活动的。有关等待类的更多信息,请参阅V$EVENT_NAME视图。

查询SQL:

select a.snap_id,
       a.sample_time,
       a.session_id,
       sql_id,
       sql_exec_id,
       sql_exec_start,
       max(a.sample_time),
       (max(to_date(to_char(a.sample_time,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')) -
       min(to_date(to_char(a.sql_exec_start,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))) * 24 * 60 * 60
  from dba_hist_active_sess_history a
 where sql_id = '00yzsa601y94h'
   and to_char(a.sample_time, 'yyyy-mm-dd hh24:mi:ss') between
       '2022-08-01 00:50:00' and '2022-09-01 19:10:00'
 group by a.snap_id,
          a.sample_time,
          a.session_id,
          sql_id,
          sql_exec_id,
          sql_exec_start;
注意:

 该SQL执行的SQL 时长会有一定的偏移,主要是我们根据采样时间来计算的,偏移量在0-10秒.

参考文档:

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26342786/viewspace-2980199/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle Postgresql MySQL DBA,DEVOPS 开发人员

注册时间:2013-03-03

  • 博文量
    73
  • 访问量
    69140