166,662.6742662代表什么的数是:十六万六千六百六十二点六七
你对这个回答的评价是
* 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告我们就可以了解一个系统的整个运行情况,这就潒一个人全面的体检报告
如何分析: * 在看awr报告的时候,我们并不需要知道所有性能指标的含义就可以判断出问题的所在,这些性能指標其实42662代表什么了oracle内部实现对oracle理解的越深,在看awr报告的时候对数据库性能的判断也会越准确
在看性能指标的时候,心里先要明白数據库出现性能问题,一般都在三个地方io,内存cpu,这三个又是息息相关的(ps:我们先假设这个三个地方都没有物理上的故障)当io负载增大时,肯定需要更多的内存来存放同时也需要cpu花费更多的时间来过滤这些数据,相反cpu时间花费多的话,有可能是解析sql语句也可能昰过滤太多的数据,到不一定是和io或内存有关系了
* 当我们把一条sql送到数据库去执行的时候我们要知道,什么时候用到cpu什么时候用到内存,什么时候用到io
1. cpu:解析sql语句尝试多个执行计划,最后生成一个数据库认为是比较好的执行计划不一定是最优的,因为关联表太多的時候数据库并不会穷举所有的执行计划,这会消耗太多的时间oracle怎么就知道这条数据时你要,另一个就不是你要的呢这是需要cpu来过滤嘚
这里有一点说明的是虽然oracle占用了8G的内存,但pga一般只占8G嘚20%对于专用服务器模式,每次执行sql语句表数据的运算等操作,都在pga中进行的也就是说只能用1.6G左右的内存,如果多个用户都执行
具体分析过程: * 在分析awr报告之前首先要确定我们的系统是属于oltp,還是olap(数据库在安装的时候选择的时候,会有一个选项是选择oltp,还是olap)
* 为了对数据库有个整体的认识先看下面的性能指标
2. Buffer Hit 说明从内存取数据的时候,buffer的命中率的比例期望值是100%,但100%并不42662代表什么性能就好因为这只是一个比例而已,举个例子执行一条 sql语句,# 执行计劃是需要取10000个数据块结果内存中还真有这10000个数据块,那么比例是100%表面上看是性能最高的,还有一个执行计划是需要500
* 继续看Top 5 Timed Events从这里可鉯看出等待时间在前五位的是什么事件,基本上就可以判断出性能瓶颈在什么地方
AWR的数据主要有两部分组成:1)保存在内存中的系统负载和性能统计数據主要通过v$视图查询 ;
2)mmon进程定期以快照(snapshot)的方式将内存中的AWR数据保存到SYSAUX表空间中,主要通过DBA_*视图访问
1. AWR快照的生成默认情况下,每隔一尛时自动产生一个快照保存最近7天的信息,可以通过以下语句查询:
策略因为AWR报告非常长不可能从头到尾一字不漏的去看,要有选择嘚去看重点部分最好能对照的来读,即和系统正常情况下的AWR报告对比找差异。
AWR报告采用总分的形式前面是系统的整体情况,后面是各个部分细节一开始不要陷入细节,先分析系统的整体状况对于后面的专题分析,要根据关注点的不同采取跳跃式分析。
具体状况方面1)Top 5 Timed Events:这里列出消耗时间最多的5个等待事件每种等待说明,都表示一种原因如:db file sequential read表示按索引访问出现等待,db file scattered reade表示全表扫描访问出现等待事件
2)Top N SQL:根据时间消耗,内存消耗物理I/O等排序,对相关SQL分析执行计划
3)如果昰RAC环境需要特别关注RAC Statistic中的相关指标
5)分析表空间、数据文件I/O
DB Time不包括Oracle后台进程消耗的时间。如果DB Time远远小于Elapsed时间说明数据库比较空闲。
在79汾钟里(其间收集了3次快照数据)数据库耗时11分钟,RDA数据中显示系统有8个逻辑CPU(4个物理CPU)平均每个CPU耗时1.4分钟,CPU利用率只有大约2%(1.4/79)說明系统压力非常小。
可是对于批量系统数据库的工作负载总是集中在一段时间内。如果快照周期不在这一段时间内或者快照周期跨喥太长而包含了大量的数据库空闲时间,所得出的分析结果是没有意义的这也说明选择分析时间段很关键,要选择能够42662代表什么性能问題的时间段
显示SGA中每个区域的大小(在AMM改变它们之后),可用来与初始参数值比较
cache的代价高得多。因此shared pool的设置要确保最近使用的数据嘟能被cache
显示数据库负载概况,将之与基线数据比较才具有更多的意义如果每秒或每事务的负载变化不大,说明应用运行比较稳定单個的报告数据只说明应用的负载情况,绝大多数据并没有一个所谓“正确”的值然而Logons大于每秒1~2个、Hard parses大于每秒100、全部parses超过每秒300表明可能有爭用问题。
Redo size:每秒/每事务产生的redo大小(单位字节)可标志数据库任务的繁重程序。
Hard parses:其中硬解析的次数硬解析太多,说明SQL重用率不高
Sorts:每秒/每事务的排序次数
Logons:每秒/每事务登录的次数
Oracle的硬解析和软解析
提到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程当你发絀一条sql语句交付Oracle,在执行和获取结果前Oracle对此sql将进行几个步骤的处理过程:
检查此sql的拼写是否语法。
诸如检查sql语句中的访问对象昰否存在及该用户是否具备相应的权限
其中,软、硬解析就发生在第三个过程里
假设存在,则将此sql与cache中的进行比较;
假設“相同”就将利用已有的解析树与执行计划,而省略了优化器的相关工作这也就是软解析的过程。
诚然如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作这个过程就叫硬解析。
创建解析树、生成执行计划对于sql的執行来说是开销昂贵的动作所以,应当极力避免硬解析尽量使用软解析。
Profile一节相同这一节也没有所谓“正确”的值,而只能根据应鼡的特点判断是否合适在一个使用直接读执行大型并行查询的DSS环境,20%的Buffer Hit Ratio是可以接受的而这个值对于一个OLTP系统是完全不能接受的。根据Oracle嘚经验对于OLTPT系统,Buffer Hit Ratio理想应该在90%以上
Buffer Nowait表示在内存获得数据的未等待比例。
buffer hit表示进程从内存中找到数据块的比率监视这个值是否发生重夶变化比这个值本身更重要。对于一般的OLTP系统如果此值低于80%,应该给数据库分配更多的内存
Parse CPU to Parse Elapsd:解析实际运行时间/(解析实际运行时间+解析中等待资源时间),越高越好
Execute to Parse:是语句执行与分析的比例,如果要SQL重用率高则这个比例会很高。该值越高表示一次解析后被重复执行嘚次数越多
In-memory Sort:在内存中排序的比率,如果过低说明有大量的排序在临时表空间中进行考虑调大PGA。
Soft Parse:软解析的百分比(softs/softs+hards)近似当作sql在囲享区的命中率,太低则需要调整应用使用绑定变量
Memory Usage %:对于一个已经运行一段时间的数据库来说,共享池内存使用率应该稳定在75%-90%间,洳果太小说明Shared Pool有浪费,而如果高于90说明共享池中有争用,内存不足
SQL with executions>1:执行次数大于1的sql比率,如果此值太小说明需要在应用中更多使用绑定变量,避免过多SQL解析
这是报告概要的最后一节,显示了系统中最严重的5个等待按所占等待时间的比例倒序列示。当我们调优時总希望观察到最显著的效果,因此应当从这里入手确定我们下一步做什么例如如果‘buffer busy wait’是较严重的等待事件,我们应当继续研究报告中Buffer Wait和File/Tablespace IO区的内容识别哪些文件导致了问题。如果最严重的等待事件是I/O事件我们应当研究按物理读排序的SQL语句区以识别哪些语句在执行夶量I/O,并研究Tablespace和I/O区观察较慢响应时间的文件如果有较高的LATCH等待,就需要察看详细的LATCH统计识别哪些LATCH产生的问题
通常,在没有问题的数据庫中CPU time总是列在第一个。
更多的等待事件参见本报告 的Wait Events一节。
此节显示了各种类型的数据库处理任务所占用的CPU时间
Reads”节中识别(在其咜版本的报告中,可能是别的名称)如果在OLTP应用中,不应该有过多的全扫描操作而应使用选择性好的索引操作。
DB file sequential read等待意味着发生顺序I/O讀等待(通常是单块读取到连续的内存区域中)如果这个等待非常严重,应该使用上一段的方法确定执行读操作的热点SEGMENT然后通过对大表进行分区以减少I/O量,或者优化执行计划(通过使用存储大纲或执行数据分析)以避免单块读操作引起的sequential read等待通过在批量应用中,DB file sequential read是很影响性能的事件总是应当设法避免。
Log File Parallel Write事件是在等待LGWR进程将REDO记录从LOG 缓冲区写到联机日志文件时发生的虽然写操作可能是并发的,但LGWR需要等待最后的I/O写到磁盘上才能认为并行写的完成因此等待时间依赖于OS完成所有请求的时间。如果这个等待比较严重可以通过将LOG文件移到哽快的磁盘上或者条带化磁盘(减少争用)而降低这个等待。
Waits”一节中找出发生这种等待的SEGMENT然后通过使用reverse-key indexes并对热表进行分区而减少这种等待事件。
Enqueue Waits是串行访问本地资源的本锁表明正在等待一个被其它SESSION(一个或多个)以排它模式锁住的资源。减少这种等待的方法依赖于生產等待的锁类型导致Enqueue等待的主要锁类型有三种:TX(事务锁), TMD(ML锁)和ST(空间管理锁)。
本节按各种资源分别列出对资源消耗最严重的SQL语呴并显示它们所占统计期内全部资源的比例,这给出我们调优指南例如在一个系统中,CPU资源是系统性能瓶颈所在那么优化buffer gets最多的SQL语呴将获得最大效果。在一个I/O等待是最严重事件的系统中调优的目标应该是physical IOs最多的SQL语句。
在STATSPACK报告中没有完整的SQL语句,可使用报告中的Hash Value通過下面语句从数据库中查到:
当一个进程予在正被其它进程锁住的数据行上获得排它锁时发生这种等待这种等待经常是由于在一个有主鍵索引的表上做大量INSERT操作。