性能测试系列:Oracle数据库awr报告使用与分析
一 AWR报告生成
1、生成AWR(Automatic Workload Repository)报告:
sqlplus / as sysdba
SQL>@?/rdbms/admin/awrrpt.sql
2、修改采集时间和统计信息保留时间:
SQL>exec dbms_workload_repository.modify_snapshot_settings(interval=>30,retention=>7*24*60);
SQL>select * from dba_hist_wr_control;
3、手动执行一个快照:
SQL>exec dbms_workload_repository.create_snapshot;
4、创建一个AWR基线:
SQL>exec dbms_workload_repository.create_baseline(start_snap_id,end_snap_id,baseline_name);
二 AWR主要指标说明
|
指标 |
指标说明 |
|
redo size |
单位bytes,redosize可以用来估量update/insert/delete的频率, 大的redosize往往对lgwr写日志和arch归档造成I/O压力。 |
|
Logical Read |
单位 次数*块数, 逻辑读耗CPU,主频和CPU核数都很重要, 逻辑读高则DBCPU往往高,也往往可以看到latch: cache buffers chains等待。 |
|
Block changes |
单位次数*块数 , 描绘数据变化频率 |
|
Physical Read |
单位次数*块数, 物理读消耗IO,体现在IOPS和吞吐量等不同维度上;但减少物理读可能意味着消耗更多CPU。 physical read包含了physical reads cache和physical reads direct |
|
Physical writes |
单位次数*块数,主要是DBWR写datafile,也有direct path write。 dbwr长期写出慢会导致定期log file switch(checkpoint no complete) 检查点无法完成的前台等待。 physical write 包含了physical writes direct +physical writes from cache |
|
User Calls |
单位次数,用户调用数 |
|
Parses |
解析次数,包括软解析+硬解析; 软解析每秒超过300次意味着”应用程序”效率不高,调整session_cursor_cache。 |
|
Hard Parses |
万恶之源,Cursor pin s on X, library cache: mutex X , latch: row cache objects /shared pool… 硬解析最好少于每秒20次,每秒超过100次,说明绑定使用的不好,也可能共享池设置不合理。 |
|
W/A MB processed |
单位MB W/A workarea workarea中处理的数据数量结合 In-memory Sort%, sorts (disk) PGA Aggr一起看 |
|
Transactions |
每秒事务数,是数据库层的TPS,可以看做压力测试或比对性能时的一个指标,孤立看无意义。 |
|
% Blocks changed per Read |
每次逻辑读导致数据块变化的比率;如果’redo size’, ‘block changes’ ‘pct of blocks changed per read’,三个指标都很高,说明系统正执行大量insert/update/delete; |
|
Rollback per transaction % |
事务回滚比率。 Rollback per transaction %= (rollback)/(transactions) |
|
Rows per Sort |
平均每次排序涉及到的行数 ; Rows per Sort= ( sorts(rows) ) / ( sorts(disk) + sorts(memory)) |
|
Buffer Nowait % |
session申请一个buffer(兼容模式)不等待的次数比例,需要访问buffer时立即可以访问的比率; |
|
buffer HIT% |
高速缓存命中率,反映物理读和缓存命中间的纠结,这个指标即便99% 也不能说明物理读等待少了; |
|
Redo nowait% |
session在生成redo entry时不用等待的比例,redo相关的资源争用,小于90%,考虑增加log buffer; |
|
In-memory Sort% |
在内存中完成的排序比率 ;In-memory Sort% = sort(memory) / ( sort(disk)+ sort(memory) ) |
| Library Hit% |
library cache命中率,合理值:>95% ,否则加大共享池,使用绑定变量,修改cursor_sharing等参数; |
| Soft Parse % |
快照时间内软解析次数和总解析次数 (soft+hard 软解析次数+硬解析次数)的比值; |
| Execute to Parse% |
执行解析比 ,公式为 1-(parse/execute),目标为100%; (Execute次数 - Parse次数)/Execute次数 x 100% |
| Latch Hit% |
申请不要等待的比率,Latch Hit%:= (1 – (Sum(misses) / Sum(gets))) |
| Memory Usage % |
shared pool的空间使用率,稳定在75%-90% |
| % SQL with executions>1 |
复用的SQL占总的SQL语句的比率, |
|
% Memory for SQL w/exec>1 |
执行2次以上的SQL所占内存占总的SQL内存的比率 |
|
% Non-Parse CPU |
CPU非分析时间在整个CPU时间的百分比,查询实际运行时间/(查询实际运行时间+sql解析时间) |
三 AWR报告分析
分析内容:
1、CPUs、Elapsed、DB Time
2、Load Profile
3、Instance Efficiency Percentages
4、Top 10 Foreground Events by Total Wait Time
5、SQL Statistics
6、Global Cache Load Profile
7、Global Cache Efficiency Percentages
8、Global Cache and Enqueue Services
四 SQL语句分析
1、SQL> explain plan for sql ;
2、SQL>select * from table(dbms_xplan.display_cursor(sql_id));
3、SQL>@?/rdbms/admin/sqltrpt.sql sql_id
五 Oracle常见等待事件解决方法
Sequential Read:调整相关的索引和选择合适的驱动行源
Scattered Read:表明出现很多全表扫描。优化code,cache小表到内存中。
Free Buffer:增大DB_CACHE_SIZE,增大checkpoint的频率,优化代码; oracle之检查点(Checkpoint);数据库日志用来断电回滚,日志通过buffer触发IO写入磁盘,这个触发由检查点来做。
Buffer Busy Segment header:增加freelist或者freelistgroups
Buffer Busy Data block:隔离热块;使用反转索引;使用更小的块;增大表的initrans
Buffer Busy Undo header:增加回滚段的数量或者大小
Buffer Busy Undo block Commit more:增加回滚段的数量或者大小
Enqueue–ST:使用本地管理的表空间或者增加预分配的盘区大小
Enqueue–HW:在HWM之上预先分配盘区
Enqueue–TX4:在表或者索引上增大initrans的值或者使用更小的块
Log Buffer Space:增大LOG_BUFFER,改善I/O
Log File Switch:增加或者增大日志文件
Log file sync:减小提交的频率;使用更快的I/O;或者使用裸设备
Write complete waits:增加DBWR;提高CKPT的频率;
gc cr/current request:增加带宽;隔离热块;增加LMS进程数;提高磁盘IO
gc cr multi block busy:在RAC层面将应用功能分离
gc buffer busy acquire/release:分区;反向索引;提高SQL效率;将不同应用功能数据分布在不同数据库实例上
DFS lock handle:增大序列缓存,不使用排序选项
Latch Free:检查具体的等待latch类型,解决方法如下
Library cache:使用绑定变量; 调整shared_pool_size.
Shared pool:使用绑定变量; 调整shared_pool_size.
Redo allocation:减小 redo 的产生; 避免不必要的commits.
Redo copy:增加 _log_simultaneous_copies.
Row cache objects:增加shared_pool_size
Cache buffers chain:增大 _DB_BLOCK_HASH_BUCKETS ; make it prime.
Cache buffers LRU chain:使用多个缓冲池;调整引起大量逻辑读的查询
TBL$OR$IDX$PART$NUM,这个BUG的主要影响范围是 12.1.0.1 (Base Release) 和 11.2.0.4。详情;
性能测试系列:Oracle数据库awr报告使用与分析的更多相关文章
- 获取Oracle数据库awr报告方法
--登录数据库 sqlplus username/passwd; --运行生成AWR报告脚本 SQL> @?/rdbms/admin/awrrpt.sql; --输入要生成报告的格式:htm ...
- windows主机上ORACLE生成awr报告的步骤
oracle数据库是一个大型的关系型数据库,那么如果有一天装载数据库的主机由于大量的IO操作导致主机cpu荷载超过100%会使得主机卡顿或者对数据库连接或者进行数据库进行正常的IO操作都会产生影响,所 ...
- Oracle——生成Awr报告
Oracle--生成Awr报告 AWR的概念 Oracle数据库是一个使用量很多的数据库,关于Oracle数据库的性能.Oracle10g以后,Oracle提供了一个性能检测的工具:AWR(Autom ...
- Oracle生成awr报告操作步骤介绍
AWR全称Automatic Workload Repository,自动负载信息库,是Oracle 10g版本后推出的一种性能收集和分析工具,提供了一个时间段内整个系统的报表数据.通过AWR报告,可 ...
- Oracle的AWR报告分析
* 定义:awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告 ...
- ORACLE 10g AWR报告设置总结
1:查看.修改AWR报告快照数据的采样间隔.保存策略 SQL> COL DBID FOR 999999999999 SQL> COL SNAP_INTERVAL FOR A26 SQL ...
- oracle生成AWR报告方法
2018-04-02 19:59:42 在10g 11g中AWR自动的每隔一小时进行一次数据采集并生成快照.下面是生成AWR报告的步骤: 1:使用oracle用户在数据库服务器上执行如下命令 sqlp ...
- [转]oracle awr报告生成和分析
转自:http://blog.csdn.net/cuker919/article/details/8767328 最近由于数据库cpu占用非常高,导致VCS常常自动切换,引起很多问题. 最近学习一下数 ...
- ORACLE数据库AWR工具学习
AWR(Automatic Workload Repository)即工作负载信息库,主要用于收集数据库运行状态的资料库,通过AWR报告可以分析ORACLE数据库的性能,从而给出优化策略. 图一:此图 ...
- 【ORACLE】awr报告问题分析
本文转自:http://www.linuxidc.com/Linux/2015-10/123959.htm 感谢分享 1.问题说明 运维人员都有"节日休假恐怖症",越到节日.休假和 ...
随机推荐
- JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性
壹 ❀ 引 看过博主JS 疫情宅在家,学习不能停,七千字长文助你彻底弄懂原型与原型链这篇文章的同学应该知道,文中有专门介绍这个问题.那么为什么我要另起一篇再说一次呢?原因有两个,一是介绍原型与原型链的 ...
- NC16696 [NOIP2001]统计单词个数
题目链接 题目 题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份( 1 < k ≤ 40 ...
- Spring Boot图书管理系统项目实战-3.用户登录
导航: pre: 2.项目搭建 next:4.基础信息管理 只挑重点的讲,具体的请看项目源码. 1.项目源码 需要源码的朋友,请捐赠任意金额后留下邮箱发送:) 2.登录页设计 <!DOCTYP ...
- Vulnhub靶机网卡启动失败(Raise network interfaces)
问题 使用一些Linux靶机进行搭建后可能会出现无法搜索到IP的情况,并且会在系统启动时报错,类似下图所示 这个主要是因为vulnhub上的镜像由于搭建环境.版本等问题不适配,网卡没有正确识别导致的, ...
- 内置方法,序列化模块pickle和json---day15
1.内置方法 ads 绝对值函数 val = -16 res = abs(val) print(res) #16 round 四舍五入(n.5 n为偶数则舍去,n.5 n为奇数 则进一) 奇进偶不进 ...
- django学习第十一天---django操作cookie和session
Cookie cookie解析 会话 http协议是无状态的,无连接的 导致每次客户端访问服务端需要登录成功之后才能访问的页面,都需要用户再重新登录一遍,用户体验极差. 客户端想了个办法,cookie ...
- python模块imghdr-----推测图像类型
官方文档 https://docs.python.org/zh-cn/3/library/imghdr.html#module-imghdr 用处 模块推测文件或字节流中的图像的类型 imghdr.w ...
- 【Azure Redis 缓存】C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间
问题描述 C#程序是否有对应的方式来优化并缩短由于 Redis 维护造成的不可访问的时间? Redis维护说明: Redis 服务维护时,会把副本节点提升为主节点,且旧主节点关闭现有连接时,这个时候, ...
- OBS Studio多开/多平台直播的最佳解决方案
OBS是一款强大的PC端免费的直播推流及录制工具,功能很强大,它支持开发者根据需求开发插件集成使用 我们知道OBS支持通过插件来实现多路推流,它的优点是只需开启一个OBS窗口就可以同时推流到多个不同的 ...
- Asp .Net Web Forms 系列:配置图片防盗链的几种方法
通过 URL Rewrite Module 组件 URL Rewrite Module 是一个用于在 ASP.NET Web Forms 或其他基于 IIS 的 Web 应用程序中重写 URL 的强大 ...