在做单交易负载测试时,有的交易响应时间超出了指标值,在排除完测试环境等可能造成交易超时的原因后,去分析数据库问题。数据库用的是Oracle,对于Oracle数据库整体的性能问题, awr的报告是一个非常有用的诊断工具,于是采用Oracle自带的性能分析工具awr进行监控分析。

生成awr报告

1、   以sysdba登录数据库:sqlplus / as sysdba,如下图所示:

2、   在负载测试执行前后分别取一个快照:exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT,如下图所示:

3、   压力测试执行完后,执行awrrpt命令(@?/rdbms/admin/awrrpt)获取awr报告,并且输入报告类型为HTML(awr报告类型有html和txt两种),如下图所示:

4、   列出awr报告生成的时间段(1表示1天内的),如下图所示:

5、   输入开始和结束的snap id。如果不指定什么时候生成快照,则默认每隔1个小时生成一次。前面输入的时间段为1天,则会从当天0点开始,每隔1个小时生成一个快照,如下图示:

6、   接下来提示输入awr报告的名称,输入完名称之后,点击“file-Log Session”将报告保存到本地,再回车,就会生成相应的报告,如下图所示:

7、   awr报告生成完成后,双击打开即可查看awr报告记录的详细信息。

一、  awr定位问题

1、   Load Profile:了解系统整体负载情况,如每秒钟事务数,每秒物理读写次数,每秒逻辑读写次数,SQL语句的解析,特别是硬解析数等。

2、   Instance Efficiency Percentages (Target 100%):除了Execute to Parse %(70%以上)和Parse CPU to Parse Elapsd,其他的各指标都应该接近100%。如果不符合则基本上可以确定系统存在性能问题,但即使符合也不能说明系统完全正常。

3、   Top 10 Foreground Events by Total Wait Time:这里列出了消耗时间最多的10个等待事件,每种事件都表示一种原因。

1)       Log file sync过高问题。如果log file sync等待时间很长,超过5ms,一般它的等待时间在5ms以下。分析发现是commit请求过多,导致请求堆积在log buffer所致,修改脚本将commit请求降低,问题得到解决。总结Log file sync过高原因:

a)      硬件磁盘老化

b)      commit请求过多

c)      log buffer设置过小

2)      direct path read。direct path read就是不经过Cache,直接到磁盘上去读。而且这种全表扫描还会导致的现象就是tps的抖动、响应超时。总结导致超时原因:

a)      全表扫描

b)      SQL语句中有排序(order by等)

接下来在main report中点击SQL statistics,之后会显示SQL ordered by Elapsed Time,这是SQL语句的执行时间列表,如下图所示:

从上图可以看出,第一条sql语句的执行时间很长,所以值得怀疑,点开它的sql id,就会显示对应的sql语句,然后在plsql上执行这条sql语句,查看这条语句的执行计划,从而判断是否为全表扫描。

通过查看该sql的执行计划,发现为全表扫描(TABLE ACCESSS FULL),全表扫描是数据库服务器用来搜寻表的每一条记录的过程,直到所有符合给定条件的记录返回为止。

为该sql语句的cst_accno字段添加索引,如下图示:

重新跑负载测试,这时该交易响应时间达标。

使用AWR报告诊断Oracle性能问题的更多相关文章

  1. 例举在诊断Oracle性能问题时,常用的工具、方法

    例举在诊断Oracle性能问题时,常用的工具.方法 解答: 1)简单一点的可以用toad及dbartisan这样的工具. 2)纯做性能监测,比较出色的有spolight和emc的I3,这两个软件都比较 ...

  2. Oracle AWR报告生成和性能分析

    目录 一.AWE报告生成步骤 1.1 工具选择 1.2 自动创建快照 1.3 手工创建快照 1.4 生成AWR报告 二.AWR报告分析 2.1 AWR之DB Time 2.2 AWR之load_pro ...

  3. ORACLE AWR报告生成步骤

    ORACLE AWR报告生成步骤 (以PL/SQL中命令窗口为例) 1.sqlplus或plsql的commod窗口(命令窗口)运行命令 @D:\oracle\product\10.2.0\db_1\ ...

  4. Oracle的AWR报告分析

    * 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告 ...

  5. (原创)如何在性能测试中自动生成并获取Oracle AWR报告

    版权声明:本文为原创文章,转载请先联系并标明出处 由于日常使用最多的数据库为Oracle,因此,最近又打起了Oracle的AWR报告的主意. 过去我们执行测试,都是执行开始和结束分别手动建立一个快照, ...

  6. [转]oracle awr报告生成和分析

    转自:http://blog.csdn.net/cuker919/article/details/8767328 最近由于数据库cpu占用非常高,导致VCS常常自动切换,引起很多问题. 最近学习一下数 ...

  7. 快速熟悉 Oracle AWR 报告解读

    目录 AWR报告简介 AWR报告结构 基本信息 Report Summary Main Report RAC statistics Wait Event Statistics 参考资料 本文面向没有太 ...

  8. AWR报告分析

    AWR报告分析 awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体 ...

  9. ORACLE AWR性能报告和ASH性能报告的解读

    数据库的性能分析可分为会话级和系统级:如果确定某个会话存在性能问题,最常见的分析方式是对这个会话做一个SQL_TRACE或者10046事件,通过分析trace文件来定位问题所在.如果无法确定哪个会话性 ...

随机推荐

  1. 分享WCF文件传输---WCFFileTransfer

    前几天分享了分享了WCF聊天程序--WCFChat , 本文和大家一起分享利用WCF实现文件的传输.程序运行效果:接收文件端:发送文件端:连接WCF服务,选择要传输的文件文件传输成功:我们会在保存文件 ...

  2. python3-知识扩展扫盲易忘-zip的用法

    >>>a = [1,2,3] >>> b = [4,5,6]>>> c = [4,5,6,7,8]>>> zipped = zi ...

  3. p1457 The Castle

    原图找最大的房间及房间数很容易.然后从左下到右上找拆的位置.拆掉再bfs一次找面积. #include <iostream> #include <cstdio> #includ ...

  4. BASE64图片转字符串

    Java代码图片字符串互转 /** * 将base64字符串转成图片 * TODO * @param imgStr base64图片字符串 * @param path 目标输出路径 * @return ...

  5. linux基础3

    vim编辑器 vim 操作命令 在命令模式下操作 pageup 往上翻页(重要指数****) pagedown 往下翻页(重要指数****) H 移动到屏幕首行 gg 移动光标到文档的首行(重要指数* ...

  6. 【洛谷p1031】均分纸牌

    [博客园的第一条随笔,值得纪念一下] 均分纸牌[传送门] 洛谷上的算法标签是 这道题是一道贪心题,过了四遍才过(蒟蒻有点废) 第一遍的时候考虑的非常少,只想到了求出平均数→求差值→从左往右加差值: 这 ...

  7. Beautiful Paintings CodeForces - 651B (贪心)

    大意: 给定序列$a$, 可以任意排序, 求最大下标i的个数, 满足$a_i<a_{i+1}$. 这个贪心挺好的, 答案就为n-所有数字出现次数最大值.

  8. bzoj-2038-莫队

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 15784  Solved: 7164[Sub ...

  9. js 处理 cookie的存储与删除

    <script> //JS操作cookies方法! //写cookies function setCookie(c_name, value, expiredays){ var exdate ...

  10. Maven插件系列之spring-boot-maven-plugin

    Spring Boot的Maven插件(Spring Boot Maven plugin)能够以Maven的方式为应用提供Spring Boot的支持,即为Spring Boot应用提供了执行Mave ...