一套 Oracle 10G rac ,两台主机cpu一下在95%以上,取出两台主机awr信息分析一下
AWR查询:
SQL> @?/rdbms/admin/awrrpt.sql
awr查看步骤:
1. 如果 DB Time 比 Elapsed 大很多则 系统CPU负载很高
2. 看 TOP 5 , 如果CPU time排在第一,但%不高
查看一下 SQL ordered by CPU Time
3. 这次主要查看DB time, 得到一个大体的比例
Time Model Statistics
4. 查看硬盘读的消耗部分,哪个语句执行的最多
通过 SQL ordered by Reads 查看 %Total:
5.查看logical reads
这个部分可以排查出那些执行效率低下的sql语句。sql语句如果没有问题,查看表级存在着大量的碎片,一个分区表只有几十条数据,但是blocks却有几十万。
SQL ordered by Gets
6.查看热对象
通过 Segments by Logical Reads 来得到一些比较热的对象,可能是表,或者索引。
如果比例很高,可以通过这些热对象从sql列表中排查一下,到底是哪些sql语句和这个热对象相关。可能sql语句单独执行很快,多个并发的进程时速度就会受到影响了
7.查看物理读最高的对象
这个部分可以通过如下的方式查询。排查表FILES_CONTROL的时候,发现sql列表中的一个对应的sql语句走了全表扫描,这个表本来数据量就有好几百万,走全表扫描还是可以完全避免的。
Segments by Physical Reads
参考:
http://blog.itpub.net/25444422/viewspace-2091159/