欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

如何收集系统最繁忙时段的AWR性能报告

程序员文章站 2024-01-13 11:21:16
...

众所周知,AWR在故障排查和性能优化过程中能起到举足轻重的作用,一个常用的思路是可以结合繁忙时段和空闲时段的两份AWR性能报告很明显地看出数据库性能的变动。 问:当你想收集数据库最繁忙时段的AWR性能报告怎么办?如何判断数据库在某个时段最繁忙呢? 思

众所周知,AWR在故障排查和性能优化过程中能起到举足轻重的作用,一个常用的思路是可以结合繁忙时段和空闲时段的两份AWR性能报告很明显地看出数据库性能的变动。

问:当你想收集数据库最繁忙时段的AWR性能报告怎么办?如何判断数据库在某个时段最繁忙呢?

思路:我们可以通过DB TIME大致地判断数据库在某些时段是空闲还是繁忙,通过读取相对应的SNAP_ID来生成AWR性能报告,以下是演示过程,可以根据实际的要求来稍做调整。

收集数据库系统最繁忙时段的两个间隔SNAP_ID

select * from (SELECT snap_id,
               (nvl(LEAD(snap_id, 1) OVER(ORDER BY snap_id), 0)) AS "UP_snapid",
               value,
               (nvl(LEAD(value, 1) OVER(ORDER BY value), 0)) AS "UP_value",
               (nvl(LEAD(value, 1) OVER(ORDER BY value), 0)) - value as "Result"
          FROM dba_hist_sysstat
         where stat_name = 'DB time'
         order by 5 desc)
         where "Result" > 0
运行结果如下图:

如何收集系统最繁忙时段的AWR性能报告

通过DBMS包读取AWR信息

SELECT output
  FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(4160719624,
                                                      1,
                                                      2335,
                                                      2336));

运行结果如下图:

如何收集系统最繁忙时段的AWR性能报告

结合以上两个简单的步骤,就可以快速地收集数据库繁忙时段的AWR性能报告。但这只是相邻两个SNAP_ID的AWR性能报告,每个SNAP_ID默认相隔1小时,朋友们还可以通扩展过这个思路去收集N天内M小时间最繁忙时段的AWR性能报告。这里就不再赘述了。

-------------------------------------------------------------------------------------------------

本文来自于我的技术博客 http://blog.csdn.net/robo23

转载请标注源文链接,否则追究法律责任!