原标题:且听AWR之父解读AWR报告

AWR报告是数据库性能评估和优化的重要参考,将数据库的问题已量化的形式展现出来,给DBA带来了很多便利。然而AWR中的内容是非常多的,如何才能以最佳的方式解读AWR报告,最高效地找出数据库的性能问题所在呢?

在刚刚过去的OOW2017大会上,AWR之父Graham 做了一个主题分享,名为“AWR Analysis for Admins, Developers and Architects” 运维、开发及架构师都应该一读的AWR报告分析。演讲ppt已在oow官网公开,接下来我们简单解读一下分享的主要内容。希望对大家有所帮助和借鉴。

注:原ppt可以关注数据和云(OraNews)回复关键字2017oow获取。

以下是对该ppt的解读

真实环境下,性能问题的根源有以下几种:

1、数据库没有按照预期设计的目的被使用

2、应用的架构或代码设计不佳

3、数据库中存在一些不良的算法可能会引发问题

对于大部分人来说,都会讲优化的目标集中在一些小细节上,比如某一条SQL的性能比较差,shared pool的某一组件设置不合理等等。对于这些细节的调整,一般会带来小幅度的性能提升,而大部分人则满足于此。

RWP团队一直追求千倍以上极致的性能提升,对于他们来说,每一个性能问题,都应该找到根源,从最有效的角度解决问题,而不是满足于小幅度的性能提升。

在他们的工作当中,一般性能优化会涉及到以下几个方面的处理:

代码的改写,应用的逻辑修改,保证被正常地使用,bug的修复等。通过多个维度的调整和修改,最终实现系统性能千倍的提升。

发现数据库性能问题的方法很多,而不只是简单地看wait event 和 top SQL。事实上,我们需要的很多数据都可以从AWR报告中获取,同时,我们也需要了解系统架构的设计方式、实现原理。在我们的经验中,很多性能问题都是架构设计不合理或者应用代码的逻辑问题导致的。

接下来我们分享如何通过AWR的解读来定位问题,在AWR报告中应该关注哪些重要的信息,有效地利用报告中的数据,从而发挥AWR的真正价值。

首先看AWR报告的头部。要关注的部分如图中黄色标记所示。首先我们看到系统中有4个socket,总共32核,CPUs显示为64,应该是开了超线程。session值很高,在采样时间内还不断增长。

猜测:可能是会话泄露或者是连接风暴。

知识点补充

会话泄露:当应用程序断开连接而数据库中对应的会话还处于活动状态的时候,就会发生会话泄露。对于应用来说,就意味着程序的丢失。一般都是由于应用程序的异常导致的,在数据库中没有正常地执行commit或者rollback的时候失去了与数据库的联系。

在session本身很高的时候,每个session中的cursor值也从8增加到了26。这说明会话中游标耗尽,

猜测:可能存在游标泄露的问题。

再看详细负载信息

DBtime达到260,就意味着同一时间的活动会话数量达到260,DB CPUs大于系统CPU核数(32)。

Logons 为10.5,每秒有10+的会话登录,这个值是非常高的,在正常情况下,一般系统可能在1左右。这说明系统存在异常,再次推测可能是会话泄露或连接风暴等原因,与前面的信息相符。

60%的用户事务在做回滚。(图中写40%应该是误写,40%的事务是做提交)这也是不正常的。

接下来我们来看数据库的一些参数的设置。

我们看到数据库中块的大小是非默认块16k。同时将cursor_sharing设置为Force。

知识点补充

cursor_sharing参数有 exact和Force两个选项,force 选项指的是优化器会将所有的文本值用系统生成的绑定变量替换,如果在使用绑定变量之后SQL语句一样的话,优化器就会使用同样的执行计划。

在一般情况下不建议将参数设置为Force。这很可能会引发SQL注入的风险,对于SQL中的函数来说,在一些直接使用文本而非绑定变量更优的情况下,如果使用系统生成的绑定变量,可能会对执行计划产生负面的影响。

因此系统一般建议设置为EXACT,只有在特殊情况下才设置为Force。详情请参考官网(http://docs.oracle.com/database/122/TGSQL/improving-rwp-cursor-sharing.htm#TGSQL-GUID-6C3AFFA0-21DD-41BC-8DEE-5FC9A58B0954)

DB_file_multiblock_read_count 默认值对应于可以高效执行且与平台相关的最大I / O大小 。此处与系统CPUs核数相等,说明IO没有问题。

open_cursors 参数指定一个会话一次最多可以打开的游标的数量,默认值为50.现在设置为2000,这是很高的,说明系统存在异常。

而从db_recovery_file_dest参数的设置是哪个,我们看到存储类型为ASM,ASM是支持异步IO的,在支持异步IO 的情况下,open_cursor达到2000也是不正常的。

DB_Writer_processes的默认值为1或者CPU_count/8,取较大者。此时设置为12,比默认值大,应该是手动调整过。

前面的信息判断,系统应该是2个节点的RAC,processes推荐值为 50*2+50=150. 此时达到5500,而sessions默认值为processes*1.5+22=8272,图中的值应该也是手动调整过。 而调整的原因,推测是8272也不够用。这是很不正常的。

接下来是等待事件的分析。看到系统大部分处于等待。

以下是对于具体的top SQL的分析描述。

因此,综合上述的信息,推测系统可能是出现会话泄露和游标泄露的问题。对于会话泄露,一般是由于应用的异常导致,不能直接通过数据库层面的分析得出结论也不能单纯从数据库的层面解决。

以上,针对一份具体的AWR报告,我们看到哪些问题是最需要我们关注的,是能够帮助我们最有效地分析出系统的问题所在的。希望对大家有借鉴意义。返回搜狐,查看更多

责任编辑:

awr报告 解读_且听AWR之父解读AWR报告相关推荐

  1. python数据分析并生成报告界面_如何用Python绘图和制作数据分析报告?

    Live 简介: 你要向老板汇报自己的工作成果,如果光靠生硬的语言或文字来展示,那么老板很有可能听不懂,更没有兴趣看那一堆文字.这会直接影响你的升职加薪.但是你还要还房贷.买车子.旅游.结婚.生孩子. ...

  2. 运营管理整改报告范文_关于规范运作自查自纠活动的整改报告

    1 证券代码:600579 证券简称:ST 黄海 编号:2008-044 青岛黄海橡胶股份有限公司 关于规范运作自查自纠活动的整改报告 本公司及董事会全体成员保证公告内容的真实.准确和完整,对公告的虚 ...

  3. 计算机网络考试成绩分析报告,成绩分析报告范文_成绩分析总结与反思

    我们要对自己每一次的成绩进行分析,看看自己的优缺点在哪,要从哪里下手补救,那么你们知道成绩分析报告总结要怎么写吗?下面是学习啦为大家带来的成绩分析报告范文,希望可以帮助大家. 成绩分析报告范文1: 成 ...

  4. c语言综合程序设计省市邮政编码,《C语言程序设计课程设计报告》_课程教学大纲...

    <<C语言程序设计课程设计报告>_课程教学大纲>由会员分享,可在线阅读,更多相关<<C语言程序设计课程设计报告>_课程教学大纲(6页珍藏版)>请在人人文 ...

  5. 大学计算机实验报五告,大学计算机实验报告二_相关文章专题_写写帮文库

    时间:2019-05-12 01:07:32 作者:admin 大学计算机实验报告一 长文档的组织.编辑与排版 姓名: 学号: 专业: 年级: 指导教师: 年月日1 实验目的 学会长文档的组织.编辑. ...

  6. STM32单片机智能跟随小车_红外遥控(程序+原理图+PCB+论文报告)

    本设计: 基于STM32单片机智能跟随小车_红外遥控(程序+原理图+PCB+论文报告) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 编号C0021 资料下载 [ ...

  7. 主板上的jrgb接口干什么用_用思维导图,解读选配主板的过程,重点解读兼容与接口的搭配技术...

    本文用思维导图,解读选配主板的过程,重点解读兼容与接口的搭配技术,选择了5块不同主板,说明主板内容.重点提示,主板决定一台计算机能否稳定运行. 任务描述:重点解读兼容与接口的搭配技术,解读选配主板的过 ...

  8. 苹果报告问题_部分 Mac 用户报告称系统将打印机驱动程序视为恶意软件

    原标题:部分 Mac 用户报告称系统将打印机驱动程序视为恶意软件 一些用户报告,由于 macOS 错误声称某些软件为恶意软件,他们无法再使用惠普打印机进行打印,或者无法继续通过专用应用来播放 Amaz ...

  9. 外部接口需求怎么写_怎么写财务工作报告?送你16套高逼格财务工作报告范文PPT模板,满足不同行业会计需求!...

    2020年下半年开始了,身为会计的我们又要筹备半年度财务工作报告了.做会计真苦,不仅要能干,Excel.PPT还要玩得转:还要会说,干得好不如说得好,夸得老板哈哈笑!可是整天做报表的我们哪有时间弄这些 ...

最新文章

  1. Solr调优参考-续
  2. Java-CGLib动态代理
  3. HTML 文档的字符编码未声明。如果该文件包含 US-ASCII 范围之外的字符,该文件将在某些浏览浏览器配置中呈现为乱码。页面的字符编码必须在文档或传输协议层声明。
  4. 正则表达式入门之重复匹配
  5. MAC下搭建java的开发环境
  6. C++ 常见错误(02) —— 将dll(用c++写的)处理的结果展示在界面上
  7. java web文件拖拽上传文件_Java实现拖拽文件上传dropzone.js的简单使用示例代码
  8. 金蝶K3 对接(直接操作数据库)
  9. Java递归算法经典实例
  10. 八爪鱼批量爬取html中的数据,批量采集网页数据 - 八爪鱼采集器
  11. MTK(Android N)设置SDCard为默认存储
  12. ironman钢铁侠高清mac动态壁纸
  13. 使用Photoshop出现提示“脚本错误-50出现一般Photoshop错误“
  14. 好嗨哟!OneOS 图形组件显示自己喜欢的图片
  15. FastQC 与 质控
  16. java 回调方法是什么意思_java什么是回调
  17. 工控机主机加固安全浅析
  18. leetcode阶段总结——分割字符串类型
  19. Jenkins任务调度源码简要分析
  20. 解决:无法打开文件“GCBase_MD_VC120_v3_0_Basler_pylon_v5_0.lib”

热门文章

  1. 工作后为爱豆氪金,我妈说我真傻
  2. 将字符串转为日期格式yyyy-MM-dd||自定义格式
  3. 关于java NIO中 Chennal的阻塞在regist方法上的解决办法
  4. Apk反编译破解及重新打包
  5. Matlab 多维矩阵乘法
  6. 马云致所有阿里人的一封信:为理想而生存
  7. vue友盟埋点,用户使用情况浏览记录统计
  8. 初识JAVA(二)(送给Java和安卓初学者)----常见错误
  9. cloud-init 中文手册,最全手册,比官网讲得好
  10. 谷歌地图倾斜摄影(三维瓦片3dtiles)展示