我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

1 AWR简介

AWR(全称Automatic Workload Repository)是Oracle 10g版本推出的新特性,随数据库一起被安装的性能收集和分析工具。AWR可以收集场景运行期间的各方面性能数据,还可以从统计数据中分析出度量数据,通过分析报告,可以了解整个系统的运行情况,因而,oracle数据库常用的性能调优利器。

2 生成AWR报告

AWR是通过对比两次快照(snapshot)收集到的统计信息来生成报告。报告格式可以选择TXT或HTML,通常会选择生成方便阅读的HTML格式的报告。

生成AWR报告的方法如下:
1、使用sqlplus或pl/sql连接数据库,执行快照生成命令,注意执行的用户必须拥有DBA角色:
exec dbms_workload_repository.create_snapshot;

2、执行awr报告生成脚本,命令如下,注意在执行该命令前,通常会在场景执行后和结束前分别执行一次上述的快照命令:
@$ORACLE_HOME/rdbms/admin/awrrpt.sql

效果如下:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

如果使用pl/sql,在命令窗口(Command Window)指定awrrpt.sql的绝对路径,执行该脚本即可。

3、执行脚本会进入交互模式,输入html,即指定生成html格式的报告,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

4、输入要读取多少天内的快照信息,通常输入1,即最近1天内的快照,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

5、指定需要比对的开始快照和结束快照的id,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

6、输入要生成awr报告的名字,以.html结尾,默认以前面输入的snap_id命名,如图:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

7、脚本执行完成即可生成awr报告,默认报告会生成在当前路径,如oracle用户的家目录,或者使用pl/sql,默认在工具目录下。

3 分析AWR报告

3.1 AWR报告组成部分

AWR报告提供了详细的数据,通过Main Report部分可以快速了解SQL、实例活动、等待事件、段统计等各部分的度量数据,如图所示:

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

3.2 AWR报告分析

1、前言分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

从该部分可以了解到数据库的空闲程度,如果DB Time远远小于Elapsed时间,说明数据库比较空闲。从上图可知,在3.15分钟的时间段内,数据库耗时31.11分钟,该时间是累加了所有CPU的时间,服务器有48个CPU,平均每个CPU耗时0.64(31/48),CPU利用率约20%(0.64/3.15), 说明系统压力不大。

2、Report Summary分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

Report Summary的Cache Sizes部分显示了SGA中每个区域的大小,其中,Buffer Cache用于缓存物理磁盘上的磁盘块,加快对磁盘数据的访问速度;shared pool主要包括library cache和dictionary cache。library cache用来存储最近解析(或编译)后SQL、PL/SQL和Java classes等。 dictionary cache用来存储最近引用的数据字典。发生在library cache或dictionary cache的cache miss代价要比发生在buffer cache的代价高得多,因此shared pool的设置要确保最近使用的数据都能被cache。

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

Load Profile 显示数据库整体负载情况。经验上Logons大于每秒2个、Hard parses大于每秒100、全部parses超过每秒300表示可能有争用问题。

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分数据显示了Oracle关键指标的内存命中率及数据库实例的操作效率。各指标的期望数据是100%,但需要根据应用的特点判断是否存在瓶颈。

Buffer Nowait:表示在内存获得数据的未等待比例,Buffer Nowait的这个值一般需要大于99%,否则可能存在争用;

buffer hit:表示从内存中命中数据块的比率,如果此值低于80%,应该给数据库分配更多的内存。数据块在数据缓冲区中的命中率,通常应在95%以上;

Redo NoWait:表示在LOG缓冲区获得Buffer的未等待比例,这个值一般需要大于90%;

library hit:表示从Library Cache中检索到一个解析过的SQL语句的比率,通常应该保持在95%以上,否则需要要考虑加大共享池、使用绑定变量、修改cursor_sharing等参数;

Latch Hit:通常Latch Hit要大于99%,否则意味着Shared Pool latch争用,可能由于未共享的SQL,或者Library Cache太小,可使用绑定变量或调大Shared Pool解决;

Parse CPU to Parse Elapsd:解析实际运行时间/(解析实际运行时间+解析中等待资源时间),越高越好;

Non-Parse CPU :SQL实际运行时间/(SQL实际运行时间+SQL解析时间),太低表示解析消耗时间过多;

Execute to Parse:是语句执行与分析的比例,如果要SQL重用率高,则这个比例会很高。该值越高表示一次解析后被重复执行的次数越多;

In-memory Sort:在内存中排序的比率,如果过低说明有大量的排序在临时表空间中进行,需考虑调大PGA。如果低于95%,可以通过适当调大初始化参数PGA_AGGREGATE_TARGET或者SORT_AREA_SIZE来解决;

Soft Parse:软解析的百分比(softs/softs+hards),近似sql在共享区的命中率,如果太低,则需要调整应用使用绑定变量;

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

Memory Usage %:对于已经运行一段时间的数据库来说,Memory Usage使用率应该稳定在75%-90%间,如果太小,说明Shared Pool有浪费,而如果高于90,说明共享池中有争用,内存不足;

SQL with executions>1:执行次数大于1的sql比率,如果此值太小(一般是70%),说明需要在应用中更多使用绑定变量,避免过多SQL解析;

Memory for SQL w/exec>1:执行次数大于1的SQL消耗内存的占比;

3、Top 5 Timed Events分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分显示了系统中最严重的5个等待,并按所占等待时间的比例倒序列示。性能问题诊断或调优时,通常会首先从这里入手,根据等待事件确定排查和优化方向。在没有性能问题的数据库中,CPU time总是列在第一个。

4、SQL Statistics分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分依据资源类别列出了资源消耗最严重的SQL语句,并显示它们在统计期内所占资源的比例,为性能调优提供方向。如CPU资源是系统性能瓶颈时,优化CPU time 最多的SQL语句将获得最大效果,而在I/O等待最严重的系统中,优化Reads最多的SQL语句往往能获得明显效果。

5、IO 分析

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

该部分列出了每个表空间的I/O统计数据。通过,Av Rd(ms)不应该超过30,否则认为有I/O争用。

4 其他资源

关于python学习、分享、交流,笔者开通了微信公众号【小蟒社区】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学python。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【oracle性能优化】- 使用AWR定位oracle性能瓶颈

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Paddle模型性能分析工具Profiler定位瓶颈点优化程序详解

这篇文章主要为大家介绍了Paddle模型性能分析工具Profiler定位瓶颈点优化程序详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-03-10

突破瓶颈!ASP Performance Monitor 助您洞悉系统性能,优化应用表现

ASP Performance Monitor 作为一款专业的性能监测工具,可以帮助开发者深入洞悉系统性能,找出应用性能瓶颈,并针对性地进行优化,提升应用表现。
突破瓶颈!ASP Performance Monitor 助您洞悉系统性能,优化应用表现
2024-02-02

利用静态定位技术优化网页交互性能

静态定位技术的应用:提高网页交互性能随着互联网的迅速发展,网页的交互性能成为了用户体验的关键因素。在网页设计中,静态定位技术被广泛应用,可以显著提高网页的交互性能。本文将介绍静态定位技术的原理和应用,以及如何通过使用该技术来提高网页的交互
利用静态定位技术优化网页交互性能
2024-01-18

Oracle执行计划及性能调优详解使用方法

目录1. EXPLAIN PLAN 简介2. EXPLAIN PLAN 输出解释3. 关键性能指标1. Cost(成本)2. Cardinality(基数)3. Rows(返回行数)4. Time(执行时间)5. Operation(操作类
Oracle执行计划及性能调优详解使用方法
2024-09-24

ASP性能监视器与其他工具的协同使用:全方位监控,优化网站性能

ASP性能监视器的功能和优点,以及它如何与其他工具协同工作以全面监控和优化网站性能。
ASP性能监视器与其他工具的协同使用:全方位监控,优化网站性能
2024-02-11

如何利用Oracle Value函数简化数据库性能调优流程

Oracle Value函数是Oracle数据库中的一个内置函数,它可以帮助开发人员和数据库管理员在查询和调优过程中获取有关数据值的信息。利用Oracle Value函数可以简化数据库性能调优流程,以下是一些建议:使用Value函数分析查询
如何利用Oracle Value函数简化数据库性能调优流程
2024-10-09

PHP扩展开发:如何使用类型注解优化自定义函数的性能?

通过使用类型注解,可以提高php自定义函数的执行速度:php无需检查输入类型,节省了开销,提高了速度。强制接受和返回正确的数据类型,防止类型错误和漏洞。优化案例:使用类型注解的自定义函数sum执行速度提高了约16%。PHP扩展开发:使用类型
PHP扩展开发:如何使用类型注解优化自定义函数的性能?
2024-05-15

编程热搜

目录