讲讲AWR

来源:这里教程网 时间:2026-03-03 17:37:37 作者:

我的原创连接: 讲讲AWR (qq.com)

    我这几天一直在处理一些Oracle的分析,积累了一些要说的,前几天说了要些,一直在处理问题。这几天白鳝老师也在写,说明现阶段来说AWR对我们来是一个最好的辅助工具。前段时间在一个PG的群中一位朋友说了一句话:“说一个oracle极难被超越的地方,就是故障处理owi的思想。虽然国产很多也在借鉴,但是没有做 很好的。即使现在,一个好的dba就是it后台运维故障处理的入口,前台只会说交易慢了,清算慢了,oracle dba可以甚至可以最终定位到存储光纤线光衰(硬件一点不报错情况)”,可以看得出这位朋友有着非常好的技术功底和实战经验。

     我个人没处理过这种问题(光纤衰减),但是我处理的问题也不少。定位存储IO和网络还是做过的。不过更多的是看SQL执行的效率和执行频次。通过改善这些降低系统负荷。我们不知道应用程序开发是怎么写的逻辑,也不知道开发 用的是什么语言(java、Python等等),我们也不知道是直连数据库还是调用接口。不过这一切都不重要,因为最后操作数据库的只能是SQL,就是select、update、delete、insert。那么AWR会将这些消耗全部统计,从而让我们得到了最真实的数据。

     比如我可以看到平均每秒执行过的

Redo size可以判断写的情况如何?多还是少?

Logical read可以判断读内存多还是少,系统负荷主要来源之一。

physical read可以判断读磁盘多还是少,系统负荷主要来源之一也是SQL写的好不好的一个审核角度。

IM scan rows 看看内存发挥了多少

Executes (SQL):每秒执行多少SQL

Transactions:每秒多少个事务

下面是从其他地方找过来样例

由于AWR博大精深,每个指标都搞清楚的人可能没几个。其他很多指标估计写一本书都不够,非常复杂。如果写出来了,而且都讲明白了。我估计这本书要个几千页。不过就这些大项指标看起来就能知道大致方向。就像看病一样的望闻问切,看出是什么大致的病。比如说锁了,我就看Segments by Row Lock Waits;还有是全表还是索引建立反了,在AWR中一目了然,稍微懂Oracle的人都可以快速定位。有的时候我甚至都能推断出主要逻辑或者开发的风格特点。不得不说真的很好。而这个东西已经有了快20年了。

     所有这些是靠数据库中的探针获得的,有多少我不知道,和版本不同也有不同。我听过一个版本说有大约2万个探针。现在估计不止了。我有一点很佩服就是有这么多探针居然还不影响性能。要知道有的时候我按照个监控软件,结果监控软件占用较高的资源把被监控的数据库或者中间件高的没法用了。这种笑话也是见过的。

       我们可以利用这个进行分析什么语句执行的最慢,什么执行的最快。对运行态的数据库了如指掌。多次问题都是靠这些数据进行分析而定位的。MySQL什么时候有个这个就好了。官方自带那种。

      其实每个数据库都应该带一个自己的负载报告,这样使用者才能知道现在数据库遇到什么问题了。

相关推荐