使用AWR报告诊断Oracle性能问题
在做单交易负载测试时,有的交易响应时间超出了指标值,在排除完测试环境等可能造成交易超时的原因后,去分析数据库问题。数据库用的是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性能问题的更多相关文章
- 例举在诊断Oracle性能问题时,常用的工具、方法
例举在诊断Oracle性能问题时,常用的工具.方法 解答: 1)简单一点的可以用toad及dbartisan这样的工具. 2)纯做性能监测,比较出色的有spolight和emc的I3,这两个软件都比较 ...
- Oracle AWR报告生成和性能分析
目录 一.AWE报告生成步骤 1.1 工具选择 1.2 自动创建快照 1.3 手工创建快照 1.4 生成AWR报告 二.AWR报告分析 2.1 AWR之DB Time 2.2 AWR之load_pro ...
- ORACLE AWR报告生成步骤
ORACLE AWR报告生成步骤 (以PL/SQL中命令窗口为例) 1.sqlplus或plsql的commod窗口(命令窗口)运行命令 @D:\oracle\product\10.2.0\db_1\ ...
- Oracle的AWR报告分析
* 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告 ...
- (原创)如何在性能测试中自动生成并获取Oracle AWR报告
版权声明:本文为原创文章,转载请先联系并标明出处 由于日常使用最多的数据库为Oracle,因此,最近又打起了Oracle的AWR报告的主意. 过去我们执行测试,都是执行开始和结束分别手动建立一个快照, ...
- [转]oracle awr报告生成和分析
转自:http://blog.csdn.net/cuker919/article/details/8767328 最近由于数据库cpu占用非常高,导致VCS常常自动切换,引起很多问题. 最近学习一下数 ...
- 快速熟悉 Oracle AWR 报告解读
目录 AWR报告简介 AWR报告结构 基本信息 Report Summary Main Report RAC statistics Wait Event Statistics 参考资料 本文面向没有太 ...
- AWR报告分析
AWR报告分析 awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体 ...
- ORACLE AWR性能报告和ASH性能报告的解读
数据库的性能分析可分为会话级和系统级:如果确定某个会话存在性能问题,最常见的分析方式是对这个会话做一个SQL_TRACE或者10046事件,通过分析trace文件来定位问题所在.如果无法确定哪个会话性 ...
随机推荐
- Ubuntu 16.04 不能用inittab 设置 运行等级 runlevel
Ubuntu 用 systemd 了,所以就没有 runlevel 了. 对应的,是一个systemd targets. Mapping between runlevels and systemd t ...
- 20170920xlVBA_FTP_UpDownLoad_DownLoad
'建立应用环境进程 Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpen ...
- 3 爬虫解析 Xpath 和 BeautifulSoup
1.正则表达式 单字符: . : 除换行以外所有字符 [] :[aoe] [a-w] 匹配集合中任意一个字符 \d :数字 [-] \D : 非数字 \w :数字.字母.下划线.中文 \W : 非\w ...
- html标签积累
<marquee>滚动标签 <marquee>标签,它是成对出现的标签,首标签<marquee>和尾标签</marquee>之间的内容就是滚动内容.&l ...
- 『PyTorch』第三弹_自动求导
torch.autograd 包提供Tensor所有操作的自动求导方法. 数据结构介绍 autograd.Variable 这是这个包中最核心的类. 它包装了一个Tensor,并且几乎支持所有的定义在 ...
- bzoj3529: [Sdoi2014]数表 莫比乌斯反演
题意:求\(\sum_{i=1}^n\sum_{j=1}^nf(gcd(i,j))(gcd(i,j)<=a),f(x)是x的因子和函数\) 先考虑没有限制的情况,考虑枚举gcd为x,那么有\(\ ...
- tornado 异步
引言 注:正文中引用的 Tornado 代码除特别说明外,都默认引用自 Tornado 4.0.1. tornado.gen 模块是一个基于 python generator 实现的异步编程接口.通过 ...
- MongoDB 教程(五):连接、新建数据库、删除数据库
连接 启动 MongoDB 服务 只需要在 MongoDB 安装目录的 bin 目录下执行 mongodb 即可. 执行启动操作后,mongodb 在输出一些必要信息后不会输出任何信息,之后就等待连接 ...
- qml 设置tooltip,Customizing ToolTip
Button { id: btn text: "Tip" anchors.horizontalCenter: pa ...
- edram install
Edraw安装 1● 下载Edraw 2● 安装步骤 断网