昨晚网友发来一份awr报告,希望帮忙分析一下。由于其他信息都没有,仅仅只有一份awr,鉴于目前有大多的朋友还不太熟悉或者说不知道如何去进行awr的分析。我这里就拿这个awr来进行分析,当抛砖引玉了。首先申请,网上分析awr的文章不少,大家也都可以参考一下。

首先来看awr前面部分信息,了解下系统的版本,以及大概判断下系统负载如何。

从上面信息我们可以得出如下结论:
—-数据库是一套11.2.0.2的RAC
—-Solaris 64bit环境,48c
—-每个cpu 的可用处理时间是3591.6 s, 2518.79/(59.86*48)=0.876,说明系统负载还是有些高的,但是连接数却不多。

从下面的load profile来看,逻辑读、物理读都不算太高、软解析也很低。

下面重点来看下top 5 event:


从top 5 等待来看,绝大多数event表现为IO类的等待,而且平均等待时间都比较高,均超过100ms,最高的为197ms。从这里,我们可以粗略的判断,系统IO问题较为严重,结合top 5来看,主要集中在direct path read等待,关于direct path read,主要表现为如下集中可能的情况:
—–parallel query
—-大量的disk排序
—-table 预读取操作

这个等待跟direct path write是不同的,direct path write主要表现为直接路径加载,parallel dml等操作。其次top 5 里的direct path read temp 主要表现为大量的disk temp 排序操作。

这里补充一点的是,在11gR2里面,部分全表扫描操作会被direct path read(简称DPR)所替代,当table大小超过5倍_small_table_threshold 大小时,oracle将自动决定是否使用direct path read去替代传统的全表扫描。另外其实还有一个参数_very_large_object_threshold,当表的大小超过这个参数的0.8倍时,oracle也会自动决定使用使用DPR去代替传统的全表扫描。下面是我们11gR2版本的关于这2个参数设置和描述:
_small_table_threshold —单位是block,11.2中默认是287.
_very_large_object_threshold —单位是MB,默认是500m

下面我们继续,由于这是一套rac,所以我们也关注下rac相关的信息,如下:

从上面来看,可以看到rac interconnect 交互比较低的,从buffer access信息来看,从disk中的读取比例有些高了,为39.07%,这也是前面direct path read/read temp的一个表现。

下面是ges/gcs的具体指标。

这里,我们重点关注receive和send的部分,通常来讲小于5ms认为是比较好的,小于20ms都算是可以接受的,这些信息其实没有一个明确的指标,都是根据经验来的,白鳝的dba日记中曾经提到过一些具体的指标,不过其中是参考的9i的rac文档。我从一份oracle internal的rac文档中找到了如下一些指标:

从这里来看,对于CR block小于5ms 认为是不错的,上限是10ms左右。而current block
一般在3ms和8ms被认为不错,当超过20ms则被视为异常或不可能接受了。反过来讲,如果这里指比较高,那么top 5 event里面比如会有gc相关的等待。

如果这里看到cr或current block 接受或send有异常,你可以看awr中rac相关的具体细节部分,例如如下部分:

由于这里没什么问题,所以我就不多说了,继续分析这个awr。

由于前面我们已经清楚的看到,问题集中在IO上,那么我们就来看看IO方面的细节:


可以看到1小时内,所读的block达到了1.5T,太大了。其中绝大部分是集中在对datafile的访问,tmepfile的操作有一些,相对来讲算是比较少的了。
这样来看,问题集中在应用层面了,我们来看看SQL部分。

可以看到,主要是就那几个parallel query的SQL导致的大量IO,从sql 部分信息,我没有看到Top SQL with event的信息,所以从这来看,前面单从top 5event中的direct path read怀疑可能是11gR2的特性 当表超过5倍_small_table_threshold 大小而是用direct path read来代替全表扫描是不正确的。从这里来看,就是那几个parallel query导致的direct path read,而且direct path read temp应该也是这个导致,因为sql包含大量的排序了。

刚刚网友说,他们这个库目前是每天下午6~7点都会down机,目前已经调整了应用了。我想,问题应该已经解决了,拭目以待了。

最后补充下IO类相关几个event的一些指标,比如平均等待时间超过多少ms,我们就认为有问题了。
可以参考如下表格:

说明:awr报告中还有很多其他的内容,就不说明了,例如:

例如instance activity statistics,我们可以通过里面的数据去判断数据中是否有表存在行链接或行迁移,再或者看系统回滚率是否正常、一些参数设置是否合理等等。buffer pool statistics和advisory statistics部分信息是从来判断oracle sga和pga中内存组件设置是否合理的,当然这个仅仅是参考值,而且最好是采集多份awr包括进行综合分析。后面的undo/latch/dictionary等信息就不多说了,回头有具体的案例涉及到在进行分析描述。这次就先到这里吧。转:http://www.killdb.com/2012/08/17/%e4%b8%80%e4%bb%bd11gr2-rac-awr%e6%8a%a5%e5%91%8a%e7%9a%84%e7%ae%80%e5%8d%95%e5%88%86%e6%9e%90.html

一份11gR2 rac awr报告的简单分析的更多相关文章

  1. [转]oracle awr报告生成和分析

    转自:http://blog.csdn.net/cuker919/article/details/8767328 最近由于数据库cpu占用非常高,导致VCS常常自动切换,引起很多问题. 最近学习一下数 ...

  2. Oracle AWR报告生成和性能分析

    目录 一.AWE报告生成步骤 1.1 工具选择 1.2 自动创建快照 1.3 手工创建快照 1.4 生成AWR报告 二.AWR报告分析 2.1 AWR之DB Time 2.2 AWR之load_pro ...

  3. Oracle 11g AWR 系列五:如何生成 AWR 报告?

    1.生成单实例 AWR 报告: @$ORACLE_HOME/rdbms/admin/awrrpt.sql 2.生成 Oracle RAC AWR 报告: @$ORACLE_HOME/rdbms/adm ...

  4. 极简AWR报告收集指导

    1.以oracle用户登录oracle数据库,执行如下命令登录数据库: sqlplus / as sysdba 2.运行如下命令: @?/rdbms/admin/awrrpt.sql 3.出现如下信息 ...

  5. 提取oracle awr报告

    做性能测试时有时需要分析sql的执行情况,以找出需要优化的sql,oracle数据库就提供了很好的数据库状态和sql执行情况的监控平台,数据库的监控平台可以时时的监控数据库的状态,同时还可以取监控的时 ...

  6. Oracle生成awr报告操作步骤介绍

    AWR全称Automatic Workload Repository,自动负载信息库,是Oracle 10g版本后推出的一种性能收集和分析工具,提供了一个时间段内整个系统的报表数据.通过AWR报告,可 ...

  7. Oracle AWR报告指标全解析-11011552

    1-5 Top 5 Timed EventsWaits : 该等待事件发生的次数, 对于DB CPU此项不可用Times : 该等待事件消耗的总计时间,单位为秒, 对于DB CPU 而言是前台进程所消 ...

  8. ORACLE 10g AWR报告设置总结

      1:查看.修改AWR报告快照数据的采样间隔.保存策略 SQL> COL DBID FOR 999999999999 SQL> COL SNAP_INTERVAL FOR A26 SQL ...

  9. Oracle 每天自动生成AWR报告

    经验丰富的老员工希望能够每天为数据库生成1个AWR报告,以便于后期分析数据库的性能变化,手动生成太麻烦,查了一下资料,发现可以自动生成,过程如下. 数据库环境:11gR2 RAC(双节点) AWR报告 ...

随机推荐

  1. 让CLOVER默认引导WINDOWS

    解决问题帖子: http://www.insanelymac.com/forum/topic/296000-force-clover-to-always-choose-win-81-efi-as-de ...

  2. ASP.NET网页生命周期事件

    网页事件 典型的使用方式 PreInit PreInit事件是网页生命周期中非常早起的一个事件,在PreInit事件触发之后,就会加载用户设置信息与网页主题.我们通常使用PreInit事件来执行下列处 ...

  3. Leetcode 526

    class Solution { public: int countArrangement(int N) { vector<int> nums; ;i <= N;i++) nums. ...

  4. oracle11g在没DNS情况下failover的配置方法

    1.Oracle 11g引入scan ip ,可在没有DNS的情况下,客户端连接RAC配置failover时,很多情况还是使用oracle10g方式.即在客户端tnsname.ora中配置failov ...

  5. POJ 3259 Bellman_Ford算法

    额.关键是读题.反正我是看了解题报告才知道意思的.给你n个点.m条路.双向的.耗费时间.w个虫洞.单向的.时间为负值.问你是否可以从某一点返回看到之前的自己.即为判断是不是有负环.用Bellman_F ...

  6. cas 认证管理器

    CAS-默认的认证管理器:AuthenticationManagerImpl <bean id="authenticationManager" class="org ...

  7. learning uboot how to set ddr parameter in qca4531 cpu

    DDR工作频率  在600MHZ. include/configs/board953x.h #define CFG_PLL_FREQ            CFG_PLL_650_600_200 #d ...

  8. HeadFirstJava

    java执行过程的来龙去脉 源代码——编译器——输出——java虚拟机 扩展名为.java ——扩展名为.class 不要直接用类名点变量来改变属性值,一般都用get.set方法.封装的基本原则:将你 ...

  9. LA3905

    题意: 给出n颗流星,第i颗在第T秒时飞到(xi+ai*t,yi+bi*t),给出一个矩形,问在某一时刻这个矩形中的流星数目最多有多少 题解: 首先计算出每一颗流星经过时间 然后左端点移动,计算出少了 ...

  10. Python Django 前后端数据交互 之 HttpRequest、HttpResponse、render、redirect

    在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect   一.HttpRequest捕获 ...