数据库 SQL执行时长

来源:这里教程网 时间:2026-03-03 18:58:20 作者:

生产中,业务常常会反馈在历史中的某一个时间点业务慢,怀疑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秒.参考文档:

相关推荐