什么是AWR?

一堆历史性能数据,放在sysaux表空间上,AWR和sysaux都是10g出现的,是oracle调优的关键特性。

默认快照间隔1小时;10g保存7天;11g保存8天;

可以通过DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS修改

AWR核心是dbms_workload_repository包

@?/rdbms/admin/awrrpt 本实例

@?/rdbms/admin/awrrpti  RAC中选择实例号(在主机中想拉另一台oracle的awr报告)

基础统计指标:

SQL和优化器指标

OS指标

等待事件类型

时间指标(oracle时间模型)

AWR小技巧

手动执行一个快照:

exec dbms_workload_repository.create_snapshot;

创建一个awr基线:

exec dbms_workload_repository.create_baseline(start_snap_id,end_snap_id,baseline_name);

@?/rdbms/admin/awrddrpt AWR比对报告

@?/rdbms/admin/awrgrpt   RAC全局AWR

自动生成AWR HTML报告:

http://www.oracle-base.com/dba/10g/generate_multiple_awr_reports.sql

AWR报告分析可从以下几点入手:

(1).Oacle主机资源开销分析及负载情况  

(2).oracle top信息分析        Top 10 Foreground Events by Total Wait Time

(3).sql开销情况            SQL ordered by Elapsed Time

(4).oracle负载情况          Load Profile

(5).oracle实例效率分析        Instance Efficiency Percentages (Target 100%)

(6).oracle共享池分析         Shared Pool Statistics

AWR报告指标分析:

Oacle主机资源开销分析及负载情况:

CPUs:32 逻辑cpu数

Elapsed快照监控时间:如果为了诊断特定时段性能问题则Elapsed不宜过长15分钟~2、3个小时。如果是看全天负载那么可以长一些,最常见是60分钟后者120分钟。

DB Time:不包括Oracle后台进程消耗的时间,如果DB Time远远小于Elapsed时间,说明数据库比较空闲。

DB Time= cpu time + wait time(不包含空闲等待) (非后台进程)

数据库耗时17分钟,共32个逻辑cpu:17/32=0.53,平均每个cpu耗时0.53分钟

cpu利用率:0.53/60=0.008  0.8%利用率很小,说明cpu空闲

如果超过100%说明出现等待现象

oracle负载情况:

Redo size:每秒产生的日志大小(单位字节),可标志数据变更频率, 数据库任务的繁重与否。

Logical reads:每秒/每事务逻辑读的块数.平决每秒产生的逻辑读的block数。Logical Reads= Consistent Gets + DB Block Gets;

Block changes:每秒/每事务修改的块数;

Physical reads:每秒/每事务物理读的块数;

Physical writes:每秒/每事务物理写的块数;

User calls:每秒/每事务用户call次数;

Sorts:每秒/每事务的排序次数;

Logons:每秒/每事务登录的次数;

Executes:每秒/每事务SQL执行次数;

Transactions:每秒事务数.每秒产生的事务数,反映数据库任务繁重与否。

Blocks changed per Read:表示逻辑读用于修改数据块的比例.在每一次逻辑读中更改的块的百分比。

Recursive Call:递归调用占所有操作的比率.递归调用的百分比,如果有很多PL/SQL,那么这个值就会比较高。

Rollback per transaction:每事务的回滚率.看回滚率是不是很高,因为回滚很耗资源 ,如果回滚率过高,可能说明你的数据库经历了太多的无效操作 ,过多的回滚可能还会带来Undo Block的竞争 该参数计算公式如下:

Round(User rollbacks / (user commits + user rollbacks) ,4)* 100% 。

Rows per Sort:每次排序的行数

Transactions:数据库层的TPS(单独看没什么意义,可用作优化前后的对比值)。

parses:解析次数;软解析加硬解析

Hard parses:硬解析  万恶之源,会造成多种等待,不要超过每秒20次

结合Time Model Statistics查看

Hard parses(硬解析数)和hard parse (sharing criteria) elapsed time对应,看一眼Time Model Statistics,

即可知该系统是否是解析敏感的

注:

Oracle的硬解析和软解析

  提到软解析(soft prase)和硬解析(hard prase),就不能不说一下Oracle对sql的处理过程。当你发出一条sql语句交付Oracle,在执行和获取结果前,Oracle对此sql将进行几个步骤的处理过程:

  1、语法检查(syntax check)

  检查此sql的拼写是否语法。

  2、语义检查(semantic check)

  诸如检查sql语句中的访问对象是否存在及该用户是否具备相应的权限。

  3、对sql语句进行解析(prase)

  利用内部算法对sql进行解析,生成解析树(parse tree)及执行计划(execution plan)。

  4、执行sql,返回结果(execute and return)

  其中,软、硬解析就发生在第三个过程里。

  Oracle利用内部的hash算法来取得该sql的hash值,然后在library cache里查找是否存在该hash值;

  假设存在,则将此sql与cache中的进行比较;

  假设“相同”,就将利用已有的解析树与执行计划,而省略了优化器的相关工作。这也就是软解析的过程。

  诚然,如果上面的2个假设中任有一个不成立,那么优化器都将进行创建解析树、生成执行计划的动作。这个过程就叫硬解析。

  创建解析树、生成执行计划对于sql的执行来说是开销昂贵的动作,所以,应当极力避免硬解析,尽量使用软解析。

oracle top信息分析:

db file scattered read等待事件是当SESSION等待multi-block I/O时发生的,通过是由于full table scans或index fast full scans。发生过多读操作的Segments可以在“Segments by Physical Reads”和 “SQL ordered by Reads”节中识别(在其它版本的报告中,可能是别的名称)。如果在OLTP应用中,不应该有过多的全扫描操作,而应使用选择性好的索引操作。

DB file sequential read等待意味着发生顺序I/O读等待(通常是单块读取到连续的内存区域中),如果这个等待非常严重,应该使用上一段的方法确定执行读操作的热点SEGMENT,然后通过对大表进行分区以减少I/O量,或者优化执行计划(通过使用存储大纲或执行数据分析)以避免单块读操作引起的sequential read等待。通过在批量应用中,DB file sequential read是很影响性能的事件,总是应当设法避免。

Log File Parallel Write事件是在等待LGWR进程将REDO记录从LOG 缓冲区写到联机日志文件时发生的。虽然写操作可能是并发的,但LGWR需要等待最后的I/O写到磁盘上才能认为并行写的完成,因此等待时间依赖于OS完成所有请求的时间。如果这个等待比较严重,可以通过将LOG文件移到更快的磁盘上或者条带化磁盘(减少争用)而降低这个等待。

Buffer Busy Waits事件是在一个SESSION需要访问BUFFER CACHE中的一个数据库块而又不能访问时发生的。缓冲区“busy”的两个原因是:1)另一个SESSION正在将数据块读进BUFFER。2)另一个SESSION正在以排它模式占用着这块被请求的BUFFER。可以在“Segments by Buffer Busy Waits”一节中找出发生这种等待的SEGMENT,然后通过使用reverse-key indexes并对热表进行分区而减少这种等待事件。

Log File Sync事件,当用户SESSION执行事务操作(COMMIT或ROLLBACK等)后,会通知 LGWR进程将所需要的所有REDO信息从LOG BUFFER写到LOG文件,在用户SESSION等待LGWR返回安全写入磁盘的通知时发生此等待。减少此等待的方法写Log File Parallel Write事件的处理。

Enqueue Waits是串行访问本地资源的本锁,表明正在等待一个被其它SESSION(一个或多个)以排它模式锁住的资源。减少这种等待的方法依赖于生产等待的锁类型。导致Enqueue等待的主要锁类型有三种:TX(事务锁), TMD(ML锁)和ST(空间管理锁)。

sql开销情况:

SQL ordered by Elapsed Time部分可以最准确定位到某个导致的性能问题。重点关注3个参数的值:

(1).Elapsed Time(S)表示sql执行的总时间。

(2).Executions表示sql执行次数。

(3).Elap per Exec(s): 执行一次SQL的平均时间,单位时间为秒。

oracle实例效率分析:

主要关注一下两个参数:

(1).Buffer Nowait%:表示在内存获得数据的未等待比例

(2).Parse CPU to Parse Elapsd %:解析总时间中消耗总CPU的时间百分比,该值越低表示实例越空闲。

由于实例在50%左右实例处于正常状态。

Parse CPU to Parse Elapsd:说明在解析sql语句过程中,cpu占整个的解析时间比例。

解析实际运行时间/(解析实际运行时间+解析中等待资源时间),越高越好。计算公式为:Parse CPU to Parse Elapsd %= 100*(parse time cpu / parse time elapsed)。即:解析实际运行时间/(解析实际运行时间+解析中等待资源时间)。如果该比率为100%,意味着CPU等待时间为0,没有任何等待。

Shared Pool Statistics:

Memory Usage%维持在90以上,所以共享池没有造成严重浪费。

转载于:https://www.cnblogs.com/tenchina/p/8609448.html

ORACLE调优深入理解AWR报告相关推荐

  1. Oracle调优总结--1(经典实践 重要)

    Problem Description: 1.每个表的结构及主键索引情况 2.每个表的count(*)记录是多少 3.对于创建索引的列,索引的类型是什么?count(distinct indexcol ...

  2. oracle调优总结 本文转自:http://blog.csdn.net/wonth/article/details/1670366

    /*==========================================================================  *Author: MartriWang@gm ...

  3. Oracle调优总结

    /*==========================================================================  *Author: MartriWang@gm ...

  4. oracle调优 oracle培训

    oracle调优总结如下: 一.谁来调优 数据库管理员 应用架构师 应用设计师 应用开发人员 OS系统管理员 存储系统管理员 二.DBA在调优中做什么 1)应用调优(DBA和开发人员合作) SQL s ...

  5. Oracle调优综述

    在过去的十年中, Oracle 已经成为世界上最专业的数据库之一.对于 IT 专家来说,就是要确保利用 Oracle 的强大特性来提高他们公司的生产力.最有效的方法之一是通过 Oracle 调优.它有 ...

  6. 性能调优:理解Set Statistics Time输出

    性能调优:理解Set Statistics Time输出 原文:性能调优:理解Set Statistics Time输出 在性能调优:理解Set Statistics IO输出我们讨论了Set Sta ...

  7. oracle调优概述

    昨天听了博森瑞老师 老邱的公开课,oracle主机调优,收益匪浅. oracle调优不单单是oracle自己的问题,和其它方面都息息相关,包括以下5个方面: 1) 主机调优 2) 网络调优 3) 数据 ...

  8. JVM原理和调优的理解和学习

    JVM原理和调优的理解和学习 一.详解JVM内存模型 二.JVM中一次完整的GC流程是怎样的 三.GC垃圾回收的算法有哪些 四.简单说说你了解的类加载器 五.双亲委派机制是什么,有什么好处,怎么打破 ...

  9. oracle工具过期,Oracle调优工具变迁及7种诊断武器

    1.  Oracle v5 Debug code 2.  Oracle v6 Counters/Ratios BSTAT/ESTAT SQL*Trace 3.  Oracle v7 Wait Even ...

最新文章

  1. NBIOT-NPSS/NSS/NPBCH的资源位置
  2. 关于Windows 2003下开启防火墙后不能通过FTP问题解决
  3. linux文件夹多个空格,linux-在“ for”循环中读取带有空格,带有多个输入文件的制表符的完整行...
  4. php如何存到磁盘,php缓存----磁盘缓存
  5. Php基础数学运算篇
  6. 在 SAP 电商云 Spartacus UI 里使用自定义配置控制 UI 调试的开关
  7. 广东高校计算机专业,广东高校计算机专业就业率最低 专业设置忌盲目
  8. pbdom 不能解析gbk_备受家长追捧的公立学校,摇中率不到3%,还要抢着报名?速看大摇号学校全面解析!...
  9. spring-test测试demo
  10. Java—读取指定路径下文件的内容
  11. ev3编码软件linux,乐高ev3编程软件下载
  12. 性能优化:空间换时间
  13. 干货 | 携程风控数据仓库实践
  14. 一文读懂java中的Reference和引用类型
  15. 计算机通信机房消防要求,信息机房对环境有什么要求
  16. Javaweb学习笔记——Javaweb概述
  17. 【网络篇】第十七篇——IP协议详解
  18. 计算机应用最普遍的汉字字符编码是什么,计算机中目前最普遍使用的汉字字符编码是什么...
  19. 苹果终于要认真发力智能家居了!挖来前微软副总裁掌舵其人工智能部门!
  20. OSChina 周五乱弹 ——程序员看不懂的外交黑话

热门文章

  1. 转行学java好吗_转行学Java开发怎么样?
  2. WiFi和WLAN有什么区别和联系?
  3. 第一篇博客:那些年磕过的题之Fence Painting
  4. 如何用matlab画道路,MATLAB中如何将多条曲线画在一张图上
  5. teleport 简单使用
  6. 【c++】leetcode70 爬楼梯
  7. iPad用户隐私泄露事件追踪
  8. python实时音频处理_Python中的实时音频处理
  9. 购买食品要注意5原则。
  10. Android实现定时器的几种方法