Oracle中如何通过AWR查看历史慢SQL的详细统计信息?

2026-04-28 22:371阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计935个文字,预计阅读时间需要4分钟。

Oracle中如何通过AWR查看历史慢SQL的详细统计信息?

相关专题

查AWR里执行时间最长的SQL用 dba_hist_sqlstat

awr快照中真正记录历史sql耗时的是 dba_hist_sqlstat,不是 v$sql(那是内存中当前缓存的)。关键字段是 elapsed_time_delta,单位微秒,需除以 1000000 转成秒。

常见错误是直接查 ELAPSED_TIME——它没做归一化,可能含多次执行叠加值;必须用带 DELTA 的列,代表该快照周期内增量耗时。

  • 筛选慢SQL:加条件 ELAPSED_TIME_DELTA / 1000000 >= 2(2秒以上)
  • 避免漏掉低频但单次极慢的SQL:别只按 EXECUTIONS 排序,优先按 ELAPSED_TIME_DELTA 降序
  • 关联SQL文本要用 dba_hist_sqltext,注意 sql_id 可能为空(硬解析失败或被老化出共享池)

从AWR报告导出Top SQL要盯住“SQL Statistics”章节

生成AWR报告(awrrpt.sql)后,翻到“SQL Statistics”部分,里面分多个子表:SQL ordered by Elapsed TimeSQL ordered by CPU TimeSQL ordered by Gets 等。最常用的是第一个。

阅读全文
标签:Oracle

本文共计935个文字,预计阅读时间需要4分钟。

Oracle中如何通过AWR查看历史慢SQL的详细统计信息?

相关专题

查AWR里执行时间最长的SQL用 dba_hist_sqlstat

awr快照中真正记录历史sql耗时的是 dba_hist_sqlstat,不是 v$sql(那是内存中当前缓存的)。关键字段是 elapsed_time_delta,单位微秒,需除以 1000000 转成秒。

常见错误是直接查 ELAPSED_TIME——它没做归一化,可能含多次执行叠加值;必须用带 DELTA 的列,代表该快照周期内增量耗时。

  • 筛选慢SQL:加条件 ELAPSED_TIME_DELTA / 1000000 >= 2(2秒以上)
  • 避免漏掉低频但单次极慢的SQL:别只按 EXECUTIONS 排序,优先按 ELAPSED_TIME_DELTA 降序
  • 关联SQL文本要用 dba_hist_sqltext,注意 sql_id 可能为空(硬解析失败或被老化出共享池)

从AWR报告导出Top SQL要盯住“SQL Statistics”章节

生成AWR报告(awrrpt.sql)后,翻到“SQL Statistics”部分,里面分多个子表:SQL ordered by Elapsed TimeSQL ordered by CPU TimeSQL ordered by Gets 等。最常用的是第一个。

阅读全文
标签:Oracle