<让oracle跑得更快-7> AWR性能报告

标签: oracle awr 性能 | 发表时间:2015-03-01 22:45 | 作者:
出处:http://www.iteye.com
AWR是oracle 10g下提供的一种性能收集和分析工具,可以看做10g以前statspack工具的一个升级版本,它能够提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统整个运行情况。

读懂AWR报告并不是简单地通过理解里面的性能指标的含义就能掌握的。需要你相当了解oracle的内部机制,方方面面的内部机制,对oracle理解得越深,看AWR报告后对数据库性能的判断也会越准确。
数据库的性能分析,大致上可以分为两个层面,会话级和系统级(实例级)。
1. 会话级
如果我们能够确定某个会话存在性能问题,那么我们就可以针对这个确定的会话做分析。最常见的分析方式是对这个会话做一个sql_trace或者10046事件,通过分析trace文件来定位问题的所在。

2. 实例级
当我们无法确定哪个会话性能有问题(或者说每个会话性能都有问题)的时候,就需要从实例级别来分析问题的所在,这很有可能是实例整体性能下降导致的。为了获得一个实例的整体性能数据,我们可以查询一些动态视图,比如V$sysstat,V$system_events为了查询实例里的整体性能情况,可能要查询很多方面的信息,比如SQL,比如IO,比如等待,需要查询非常多的视图。针对这种情况,在oracle 10g之前,statspack工具包是做实例级性能分析的首选工具,他能定期收集数据库的性能信息,然后生成报告;在10g里,oracle提供了一个新的性能采集和分析的工具AWR(Automatic Workload Repository),它比statspack收集的信息更多,使用起来更方便。AWR由运行在oracle的后台进程自动,定期收集数据库的性能数据,并将数据保存起来,每一个小时,AWR都会生成一次性能数据快照,为DBA提供某个时刻数据库性能分析的数据信息。
AWR的性能数据是oracle自动采集和保存的,采集周期是1小时,不需要人为干预,我们要做的就是使用这些信息,生成一个AWR性能分析报告。

7.1 生成AWR性能报告
(1)首先进入生成AWR报告使用脚本的路径下,它的位置是:
$ORACLE_HOME/rdbms/admin
我们使用了环境变量$ORACLE_HOME,在每个安装了oracle实例软件的机器上,在oracle默认用户下,都应该设置了这个变量。
(2)然后我们执行以下命令,其中调用的脚本awrrpt.sql就是生成AWR报告用到的脚本:


这一部分显示数据库的ID、数据库名称和当前实例名称。


这里AWR要求我们指定报告的显示方式,默认是HTML方式,也可以直接输出为文本方式。 建议使用HTML方式,因为在报告中有一些页面内部有链接,使用HTML可以更容易定位信息,如果不输入,默认值是HTML.


如果运行的系统是一个RAC结构,这一部分会列出所有的实例。


AWR询问要显示最近几天的快照信息,我们输入1表示显示最近一天的快照。


上面列出了最近一天的快照信息,每一个小时AWR生成一个性能快照,我们要指定需要分析性能的时间段,指定一个开始快照号和结束的快照号。


我们指定了开始快照号17218和截止快照号17219,它对应的起止时间是从早上9:00到10:00的一小时的时间间隔。


指定生成的AWR报告的路径和文件名,这里设定的路径是:
/tmp/myawr.html
完成上面的交互式信息输入后,oracle将会为我们在指定的位置生成AWR报告。
另外,oracle还提供了一个脚本awrrpti.sql,使用这个脚本可以直接生成其数据库或者其他实例上的AWR报告。这个脚本对于RAC结构的数据库很有用处,我们直接连接一个实例就可以生成所有实例的AWR性能报告。

7.2 AWR性能报告分析
AWR报告文件里包含了非常多的性能指标,如果我们像读小说一样从头读到尾,几乎可以说是毫无收获,肯定会“读了后面忘了前面”。
用户要根据自己的实际情况来从报告中获取自己需要的信息,比如对于一个 OLTP系统
(1) Library Hit
(2) Buffer Hit
这两项就应该非常关注,因为OLTP系统是一个sql执行非常密集的系统,共享池命中率低就说明有很多sql不能被重用,需要重新解析,这会大大降低系统的性能和sql的执行效率。Buffer hit在OLTP系统中也非常重要。OLTP系统要求sql的执行效率非常高,当sql需要的数据块都能保留在内存中,那么sql执行效率自然要比从磁盘读取数据块要高得多,当这个值越接近于100时,说明内存中sql访问的数据块越多,也就是从磁盘读取的数据块越少。

反之,如果你的系统是一个典型的OLAP系统或数据仓库系统,那么完全可以忽略这两个性能指标,即使他们非常低。因为OLAP系统数据库中通常是运行着一些报表分析的sql,这些sql都是一些聚类查询的sql,这些sql执行时间都非常长,而且每个sql查询的数据块可能都不相同,所以数据块很难长时间地缓存在内存当中;另外,OLAP系统本身执行的sql重复率就不高,不需要要求这些sql重用,甚至在OLAP系统中,绑定变量会导致负面作用。实际上,要把一个AWR报告讲清楚的确是一件非常困难的事,因为每个系统都不同,绝不能一概而论,那些所谓的某些指标必须要达到多少,数据库性能才能优化的说法是没有根据的。
具体每一部分的解读可以参考《让oracle跑得更快 oracle 10g 性能分析与优化思路》第13章。
【完】

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [oracle awr 性能] 推荐:

<让oracle跑得更快-7> AWR性能报告

- - ITeye博客
AWR是oracle 10g下提供的一种性能收集和分析工具,可以看做10g以前statspack工具的一个升级版本,它能够提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统整个运行情况. 读懂AWR报告并不是简单地通过理解里面的性能指标的含义就能掌握的. 需要你相当了解oracle的内部机制,方方面面的内部机制,对oracle理解得越深,看AWR报告后对数据库性能的判断也会越准确.

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

- - CSDN博客数据库推荐文章
1.生成单实例 AWR 报告:. 2.生成 Oracle RAC AWR 报告:. 3.生成 RAC 环境中特定数据库实例的 AWR 报告:. 4.生成 Oracle RAC 环境中多个数据库实例的 AWR 报告的方法:. 5.生成 SQL 语句的 AWR 报告:. 6.生成特定数据库实例上某个 SQL 语句的 AWR 报告:.

oracle性能优化

- - 行业应用 - ITeye博客
                              oracle数据库的性能优化. 主要从内部存储结构,逻辑分区,表结构范式,sql语句优化. hibernate处的层次更高,主要从缓存,和sql语句的使用.     对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整,最后一个调整级是SQL级.

awr报告详细解析

- - Oracle - 数据库 - ITeye博客
DB Time不包括Oracle后台进程消耗的时间. 如果DB Time远远小于Elapsed时间,说明数据库比较空闲. 在79分钟里(其间收集了3次快照数据),数据库耗时11分钟,RDA数据中显示系统有8个逻辑CPU(4个物理CPU),平均每个CPU耗时1.4分钟,CPU利用率只有大约2%(1.4/79).

Oracle SQL性能优化

- - 数据库 - ITeye博客
(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):. ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表. 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.

oracle性能优化总结

- - Oracle - 数据库 - ITeye博客
oracle是一个很成熟的数据库产品,当然性能方面也有不俗的表现. 尤其是9i之后又做了很多好的改进. 现在已经到12c了,不过本人只用过11g,最近有时间了,我把自己对性能的一些拙见总结一下. (有一些是来自网上,自己又给整理了一下). ORACLE性能的体现主要在CPU利用率和I/O读写次数这两个方面.

使用SQL获取ASH/ADDM/AWR报告

- - CSDN博客数据库推荐文章
有时候想直接在SQLPLUS中看ASH/ADDM/AWR报告,用下面方法还是比较方便,. 因为AWR数据在数据库中默认只保留7天,即使设置保留30天,可能有时候我们需要. 进行性能对比分析需要保留时段之前的AWR,那么我们可以采用脚本定时将AWR报告. 作者:xhailing 发表于2013-10-26 17:31:33 原文链接.

查看Oracle性能差的SQL

- - Oracle - 数据库 - ITeye博客
1.查看总消耗时间最多的前10条SQL语句. 2.查看CPU消耗时间最多的前10条SQL语句. 3.查看消耗磁盘读取最多的前10条SQL语句. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

清除Oracle中无用索引 改善DML性能-性能调优-Oracle频道-中国IT实验室

- - Delicious/searchfull
DML性能低下,其中最严重的原因之一是无用索引的存在. 所有SQL的插入,更新和删除操作在它们需要在每一行数据被改变时修改大量索引的时候会变得更慢. 许多Oracle 管理人员只要看见在一个SQL 查询的WHERE语句出现了一列的话就会为它分配索引. 虽然这个方法能够让SQL运行得更快速,但是基于功能的Oracle 索引使得数据库管理人员有可能在数据表的行上过度分配索引.