- 浏览: 495603 次
- 性别:
- 来自: OnePiece
文章分类
- 全部博客 (196)
- --------- 基础----------- (0)
- java 碎碎念 (12)
- java 并行编程 (11)
- java I/O (6)
- java Charset & Encoding (2)
- spring学习笔记 (8)
- 正则表达式 (5)
- web前端-javascript (11)
- web前端-jQuery (7)
- web前端-碎碎念 (1)
- mybatis (0)
- 数据库-通用 (8)
- 数据库-oracle (20)
- nosql-redis (11)
- nosql-mongoDB (1)
- xml (2)
- log4j (2)
- uml (3)
- web services: soap/wsdl (6)
- soa-tuscany (2)
- linux (6)
- ----------修养----------- (0)
- 深入理解java虚拟机 (7)
- java 设计模式 (9)
- 数据结构和算法 (2)
- 读书笔记--代码整洁之道 (2)
- 计算机基础 (1)
- -----------践行---------- (0)
- 重构(refactor) (7)
- jvm-诊断 (4)
- 数据库-让oracle跑得更快 (7)
- Nginx (6)
- ehcache (2)
- 短信开发 (1)
- Servlet+Filter+Listener (2)
- 运维 (6)
- 问题记录 (38)
- 杂七杂八 (12)
最新评论
-
zhanggang807:
第二种方法比较好
<spring> 定时任务每次都执行两次的问题,慎用new ClassPathXmlApplicationContext() -
assasszt:
谢谢分享,很清楚的讲明了原理。
字符集与字符编码简介 -
su0nils000:
难得的笔记
<进阶-2> 打造高效正则表达式 -
足至迹留:
mini188 写道用MD5来解决碰撞是不是也是可行的呢?个人 ...
Hash简介 -
mini188:
用MD5来解决碰撞是不是也是可行的呢?
Hash简介
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章。
【完】
读懂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章。
【完】
发表评论
-
<让oracle跑得更快-6> 绑定变量
2015-02-28 21:52 1249变量绑定是OLTP系统中一 ... -
<让oracle跑得更快-5> 执行计划
2015-02-28 21:48 1291如果要分析某条(不是整体性能,后面还会讲到awr报告,会再次说 ... -
<让oracle跑得更快-4> 优化器(optimizer)
2015-02-27 21:27 2056Oracle数据库中优化器(o ... -
<让oracle跑得更快-3> latch和等待
2015-02-27 21:18 1170经常有人把latch造成的 ... -
<让oracle跑得更快-2> 锁和阻塞
2015-02-26 22:24 11672.1 锁和阻塞 首先,注意区别并发(concurrency) ... -
<让oracle跑得更快-1> 引起数据库性能问题的因素
2015-02-26 22:04 1544此《让oracle跑得更快》 ... -
OLTP(联机事务处理)和OLAP(联机分析处理) 【转】
2015-02-12 14:13 1249做数据库优化时,一定要先了解数据库支撑的应用特点,不同类型的应 ... -
<oracle优化>(url收藏)
2015-02-11 22:18 8231. CBO & RBO Rule Based Opt ... -
<oracle-11> 数据类型
2015-02-08 20:06 2555选择一个正确的数据类 ... -
<oracle-10> 索引
2015-02-01 21:19 2036索引是应用设计和开发的一个重要方面。如果有太多的索引,修改(插 ... -
<oracle-9> 数据库表
2015-01-30 15:44 13209.1 表类型 Oracle主要有 ... -
<oracle-8> redo和undo
2015-01-26 22:23 1654本章介绍oracle数据库中 ... -
<oracle-7> 事务
2015-01-26 11:07 1551事务(transaction)是数 ... -
<oracle-6> 并发多版本控制
2015-01-12 21:17 14666.1 什么是并发控制 并 ... -
<oracle-5> 锁(lock)和闩(latch)
2015-01-07 21:11 2765开发多用户、数据库驱动的应用时,最大的难点之一是:一方面要力争 ... -
<oracle-4> oracle进程
2015-01-06 23:02 1403Oracle中的各个进程要完成某个特定的任务或一组任务,每个进 ... -
<oracle-3> 内存结构
2015-01-05 22:20 1554这一篇主要讨论oracle的3 ... -
<oracle-2> oracle文件
2014-12-22 20:57 1139与oracle实例相关的文件只有下面几种: 参数文件(para ... -
<Oracle-1> oracle体系结构概述
2014-12-21 22:02 1222本系列主要参考《Oracle ...
相关推荐
5. **监控与分析**:利用Oracle提供的工具(如AWR报告)监控系统性能,并针对发现的问题采取相应的优化措施。 综上所述,理解和掌握Latch的相关知识对于Oracle DBA来说至关重要。通过合理的系统设计和持续的性能...
标题和描述均指向一个主题:“让Oracle跑得更快”,这显然是一份专注于提升Oracle数据库性能的资料。Oracle作为全球领先的关系型数据库管理系统之一,其性能优化对于提高数据处理速度、增强系统响应能力和确保业务...
13.1.1 生成awr性能报告 337 13.1.2 awr性能报告分析 342 13.2 statspack性能报告 386 13.2.1 statspack的安装 386 13.2.2 statspack性能采集 391 13.3 ash性能报告 394 13.3.1 生成ash性能报告 395 13.3.2 ash性能...
《让Oracle跑得更快》是针对Oracle 10g数据库性能分析与优化的一份深入指南。Oracle数据库系统作为全球广泛使用的数据库管理系统之一,其性能优化对于企业数据处理效率至关重要。Oracle 10g版本在性能方面引入了许多...
由于文件中的部分内容是重复的链接,我们将忽略这些重复内容,并专注于标题和描述中提到的“让oracle跑得更快”以及“如果你深入学习oracle,如果你想学习优化oracle,下它吧!”。以下是对这些知识点的详细说明: ...
鉴于提供的文件信息中没有包含可分析的具体内容,我无法针对"让Oracle跑得更快.pdf"这一电子书提供详细的知识点。然而,基于标题中提到的“Oracle”和“跑得更快”,我可以提供一些普遍性的知识点和建议,这些建议...
根据提供的标题、描述以及部分上下文内容,我们可以推断出这篇文章主要关注的是Oracle 10g数据库系统的性能分析与优化方法。尽管实际内容部分只包含了重复的博客链接,但基于标题和描述,我们可以构建出一系列关于...
国内第一本真正意义上从工作经验出发,以作者的心得体会全面论述...书中涉及很多新的性能话题,比如执行计划,bind peeking,并行执行,10046及10053事件,AWR报告等,基本上涵盖了所有Oracle数据库性能方面的知识。
13.1.1 生成awr性能报告 337 13.1.2 awr性能报告分析 342 13.2 statspack性能报告 386 13.2.1 statspack的安装 386 13.2.2 statspack性能采集 391 13.3 ash性能报告 394 13.3.1 生成ash性能报告 395 13.3.2 ash性能...
《让Oracle跑得更快》是一本专注于Oracle数据库性能优化的专业书籍。通过阅读这本书,你可以深入理解如何提升Oracle数据库的运行效率,从而优化整个系统的性能。Oracle数据库是全球广泛使用的大型企业级数据库系统,...
《让Oracle跑得更快 2 基于海量数据的数据库设计与优化》是一本深入探讨如何在大数据环境下提升Oracle数据库性能的专业书籍。该书详细阐述了针对大规模数据的数据库设计策略以及优化技术,旨在帮助读者理解并解决...
"让Oracle跑得更快1、2集合"的主题显然聚焦于如何提升Oracle数据库的运行效率,这涉及到多个方面的知识,包括但不限于SQL优化、索引策略、数据库设计、存储结构、并行处理以及资源管理等。 首先,SQL优化是提高...
《让Oracle跑得更快:基于海量数据的数据库设计与优化》是谭怀远先生的著作,专注于探讨如何在处理大规模数据时提升Oracle数据库的性能。这本书的第二版深入讲解了Oracle数据库在面对海量数据时的设计策略和优化技巧...
《让Oracle跑得更快:基于海量数据的数据库设计与优化》是谭怀远先生的著作,专注于讲解如何在处理大规模数据时提升Oracle数据库的性能。这本书对于深入理解Oracle数据库的内部机制、设计高效的数据库架构以及实施...
为了详细地介绍《让Oracle跑得更快.Oracle.10g性能分析与优化思路》一书中的知识点,我们需要从Oracle数据库性能优化的角度出发,探讨Oracle 10g版本中常见的性能问题及其解决方案。虽然提供的信息有限,但我们可以...
### 让Oracle跑得更快:Oracle调优知识详解 #### 一、Oracle调优基础知识 在探讨具体的调优技巧之前,我们首先需要了解一些Oracle数据库的基础知识,这将有助于我们更好地理解后续的内容。 ##### 1.1 Oracle架构...
根据给定的文件信息,文件标题为“让Oracle跑得更快.Oracle.10g性能分析与优化思路”,同时附有作者“谭怀远”的名字和一个表示扫描版电子书的文件类型“.pdf”。文件描述与标题一致,强调了主题为Oracle 10g数据库...