您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 最详尽的AWR报告详细分析
深圳博睿同创信息技术有限公司深圳博睿同创信息技术有限公司AWR报告详细分析AWR是Oracle10g版本推出的新特性,全称叫AutomaticWorkloadRepository-自动负载信息库,AWR是通过对比两次快,照(snapshot)收集到的统计信息,来生成报表数据,生成的报表包括多个部分。WORKLOADREPOSITORYreportforDBNameDBIdInstanceInstnumReleaseRACHostICCI1314098396ICCI1110.2.0.3.0YESHPGICCI1SnapIdSnapTimeSessionsCursors/SessionBeginSnap:267825-Dec-0814:04:50241.5EndSnap:268025-Dec-0815:23:37261.5Elapsed:78.79(mins)DBTime:11.05(mins)DBTime不包括Oracle后台进程消耗的时间。如果DBTime远远小于Elapsed时间,说明数据库比较空闲。dbtime=cputime+waittime(不包含空闲等待)(非后台进程)说白了就是dbtime就是记录的服务器花在数据库运算(非后台进程)和等待(非空闲等待)上的时间DBtime=cputime+allofnonidlewaiteventtime在79分钟里(其间收集了3次快照数据),数据库耗时11分钟,RDA数据中显示系统有8个逻辑CPU(4个物理CPU),平均每个CPU耗时1.4分钟,CPU利用率只有大约2%(1.4/79)。说明系统压力非常小。列出下面这两个来做解释:ReportA:SnapIdSnapTimeSessionsCurs/Sess---------------------------------------------BeginSnap:461024-Jul-0822:00:546819.1EndSnap:461224-Jul-0823:00:25171.7Elapsed:59.51(mins)DBTime:466.37(mins)ReportB:SnapIdSnapTimeSessionsCurs/Sess---------------------------------------------BeginSnap:309813-Nov-0721:00:373913.6EndSnap:310213-Nov-0722:00:154016.4Elapsed:59.63(mins)DBTime:19.49(mins)服务器是AIX的系统,4个双核cpu,共8个核:/sbinbindprocessor-qTheavailableprocessorsare:01234567先说ReportA,在snapshot间隔中,总共约60分钟,cpu就共有60*8=480分钟,DBtime为466.37分钟,则:深圳博睿同创信息技术有限公司深圳博睿同创信息技术有限公司cpu花费了466.37分钟在处理Oralce非空闲等待和运算上(比方逻辑读)也就是说cpu有466.37/480*100%花费在处理Oracle的操作上,这还不包括后台进程看ReportB,总共约60分钟,cpu有19.49/480*100%花费在处理Oracle的操作上很显然,2中服务器的平均负载很低。从awrreport的Elapsedtime和DBTime就能大概了解db的负载。可是对于批量系统,数据库的工作负载总是集中在一段时间内。如果快照周期不在这一段时间内,或者快照周期跨度太长而包含了大量的数据库空闲时间,所得出的分析结果是没有意义的。这也说明选择分析时间段很关键,要选择能够代表性能问题的时间段。ReportSummaryCacheSizesBeginEndBufferCache:3,344M3,344MStdBlockSize:8KSharedPoolSize:704M704MLogBuffer:14,352K显示SGA中每个区域的大小(在AMM改变它们之后),可用来与初始参数值比较。sharedpool主要包括librarycache和dictionarycache。librarycache用来存储最近解析(或编译)后SQL、PL/SQL和Javaclasses等。librarycache用来存储最近引用的数据字典。发生在librarycache或dictionarycache的cachemiss代价要比发生在buffercache的代价高得多。因此sharedpool的设置要确保最近使用的数据都能被cache。LoadProfilePerSecondPerTransactionRedosize:918,805.72775,912.72Logicalreads:3,521.772,974.06Blockchanges:1,817.951,535.22Physicalreads:68.2657.64Physicalwrites:362.59306.20Usercalls:326.69275.88Parses:38.6632.65Hardparses:0.030.03Sorts:0.610.51Logons:0.010.01Executes:354.34299.23Transactions:1.18%BlockschangedperRead:51.62RecursiveCall%:51.72深圳博睿同创信息技术有限公司深圳博睿同创信息技术有限公司Rollbackpertransaction%:85.49RowsperSort:########显示数据库负载概况,将之与基线数据比较才具有更多的意义,如果每秒或每事务的负载变化不大,说明应用运行比较稳定。单个的报告数据只说明应用的负载情况,绝大多数据并没有一个所谓“正确”的值,然而Logons大于每秒1~2个、Hardparses大于每秒100、全部parses超过每秒300表明可能有争用问题。Redosize:每秒产生的日志大小(单位字节),可标志数据变更频率,数据库任务的繁重与否。Logicalreads:每秒/每事务逻辑读的块数.平决每秒产生的逻辑读的block数。LogicalReads=ConsistentGets+DBBlockGetsBlockchanges:每秒/每事务修改的块数Physicalreads:每秒/每事务物理读的块数Physicalwrites:每秒/每事务物理写的块数Usercalls:每秒/每事务用户call次数Parses:SQL解析的次数.每秒解析次数,包括fastparse,softparse和hardparse三种数量的综合。软解析每秒超过300次意味着你的应用程序效率不高,调整session_cursor_cache。在这里,fastparse指的是直接在PGA中命中的情况(设置了session_cached_cursors=n);softparse是指在sharedpool中命中的情形;hardparse则是指都不命中的情况。Hardparses:其中硬解析的次数,硬解析太多,说明SQL重用率不高。每秒产生的硬解析次数,每秒超过100次,就可能说明你绑定使用的不好,也可能是共享池设置不合理。这时候可以启用参数cursor_sharing=similar|force,该参数默认值为exact。但该参数设置为similar时,存在bug,可能导致执行计划的不优。Sorts:每秒/每事务的排序次数Logons:每秒/每事务登录的次数Executes:每秒/每事务SQL执行次数Transactions:每秒事务数.每秒产生的事务数,反映数据库任务繁重与否。BlockschangedperRead:表示逻辑读用于修改数据块的比例.在每一次逻辑读中更改的块的百分比。RecursiveCall:递归调用占所有操作的比率.递归调用的百分比,如果有很多PL/SQL,那么这个值就会比较高。Rollbackpertransaction:每事务的回滚率.看回滚率是不是很高,因为回滚很耗资源,如果回滚率过高,可能说明你的数据库经历了太多的无效操作,过多的回滚可能还会带来UndoBlock的竞争该参数计算公式如下:Round(Userrollbacks/(usercommits+userrollbacks),4)*100%。RowsperSort:每次排序的行数注:Oracle的硬解析和软解析深圳博睿同创信息技术有限公司深圳博睿同创信息技术有限公司提到软解析(softprase)和硬解析(hardprase),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:1、语法检查(syntaxcheck)检查此sql的拼写是否语法。2、语义检查(semanticcheck)诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。3、对sql语句进行解析(prase)利用内部算法对sql进行解析,生成解析树(parsetree)及执行计划(executionplan)。4、执行sql,返回结果(executeandreturn)其中,软、硬解析就发生在第三个过程里。Oracle利用内部的hash算法来取得该sql的hash值,然后在librarycache里查找是否存在该hash值;假设存在,则将此sql与cache中的进行比较;假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。InstanceEfficiencyPercentages(Target100%)BufferNowait%:100.00RedoNoWait%:100.00BufferHit%:98.72In-memorySort%:99.86LibraryHit%:99.97SoftParse%:99.92ExecutetoParse%:89.09LatchHit%:99.99ParseCPUtoParseElapsd%:7.99%Non-ParseCPU:99.95本节包含了Oracle关键指标的内存命中率及其它数据库实例操作的效率。其中BufferHitRatio也称CacheHitRatio,LibraryHitratio也称LibraryCacheHitratio。同LoadProfile一节相同,这一节也没有所谓“正确”的值,而只能根据应用的特点判断是否合适。在一个使用直接读执行大型并行查询的DSS环境,20%的BufferHitRatio是可以接受的,而这个值对于一个OLTP系统是完全不能接受的。根据Oracle的经验,对于OLTP系统,BufferHitRatio理想应该在90%以上。BufferNowait表示在内存获得数据的未等待比例。在缓冲区中获取Buffer的未等待比率。BufferNowait的这个值一般需要大于99%。否则可能存在争用,可以在后面的等待事件中进一步确认。bufferhit表示进程从内存中找到数据块的比率,监视这个值是否发生重大变化比这个值本身更重要。对于一般的OLTP系统,如果此值低于80%,应该给数据库分配更多的内存。数据块在数据缓冲区中的命中率,通常应在95%以上。否深圳博睿同创信息技术有限公司深圳博睿同创信息技术有限公司则,小于95%,需要调整重要的参数,小于90%可能是要加db_cache_size。一个高的命中率,不一定代表这个系统的性能是最优的,比如大量的非选择性的索引被频繁访问,就会造成命中率很高的假相(大量的dbfilesequentialread),但是一个比较低的命中率,一般就会对这
本文标题:最详尽的AWR报告详细分析
链接地址:https://www.777doc.com/doc-3924781 .html