Oracle10G 查看awr信息

一套 Oracle 10G rac ,两台主机cpu一下在95%以上,取出两台主机awr信息分析一下

AWR查询:
SQL> @?/rdbms/admin/awrrpt.sql

awr查看步骤:
1. Elapsed: 取awr运行时间,这里为8小时,
CPU time: 是实际消耗CPU的时间   ,系统 CPU time= 480 x 128个cpu= 61440
DB Time=  CPU time + 非空闲wait time;
如果 DB Time 接近或比 CPU time 大,则 系统CPU负载很高 ;
如果 DB Time 小于 CPU time 很多,则 系统CPU负载很低 ;

从上图看这个系统的cpu高的不得了,实际也是如此,高达95%以上。

2. 看 TOP 5 , 如果CPU time排在第一,实际操作需要的时间(比如进行SQL分析,执行,取回),
需要优化减少等待时间,比如减少ENQ锁等待,减少执行时间,比如减少逻辑读啊,游标共享

CPU time 中:
%Total call Time 17.4%= CPU time 844,196 / DB time 80,850.83 * 60

3. 查看一下 
SQL ordered by Elapsed Time
SQL ordered by CPU Time

4. 这次主要查看DB time, 得到一个大体的比例
Time Model Statistics

5. 查看硬盘读的消耗部分,哪个语句执行的最多
通过 SQL ordered by Reads 查看 %Total:

6.查看logical reads
这个部分可以排查出那些执行效率低下的sql语句。sql语句如果没有问题,查看表级存在着大量的碎片,一个分区表只有几十条数据,但是blocks却有几十万。
SQL ordered by Gets

7.查看热对象
通过 Segments by Logical Reads 来得到一些比较热的对象,可能是表,或者索引。
如果比例很高,可以通过这些热对象从sql列表中排查一下,到底是哪些sql语句和这个热对象相关。可能sql语句单独执行很快,多个并发的进程时速度就会受到影响了

8.查看物理读最高的对象
这个部分可以通过如下的方式查询。排查表FILES_CONTROL的时候,发现sql列表中的一个对应的sql语句走了全表扫描,这个表本来数据量就有好几百万,走全表扫描还是可以完全避免的。
Segments by Physical Reads

最后综合一下问题,以上总结问题,主要需要优化下

参考:
http://blog.itpub.net/25444422/viewspace-2091159/

posted @ 2021-02-21 18:48  莫让年华付水流  阅读(270)  评论(0编辑  收藏  举报