awr报告 解读_关于AWR报告的解析

awr报告 解读_关于AWR报告的解析其实 网上关于 AWR 的解析已经足够多了 但总觉得通过收集资料 再加工写出来的资料能便于自己理解其中的各项内容 因此我对 AWR 进行一篇详尽的解析 希望能分几次完成从 AWR 报告的第一部分包含了数据库的名称 数据库的 ID 号 实例名 实例数 启动的时间 数据库版本和是否为 RAC 此外也包含了系统的部分信息 该部分最关键的内容是第三个模块 里面记录了 snapshot 的开始时间和结束时间 以及数据库运行时间和

其实,网上关于AWR的解析已经足够多了。但总觉得通过收集资料,再加工写出来的资料能便于自己理解其中的各项内容,因此我对AWR进行一篇详尽的解析。希望能分几次完成

awr报告 解读_关于AWR报告的解析

从AWR报告的第一部分包含了数据库的名称、数据库的ID号、实例名、实例数、启动的时间、数据库版本和是否为RAC。此外也包含了系统的部分信息。

该部分最关键的内容是第三个模块,里面记录了snapshot的开始时间和结束时间,以及数据库运行时间和用户级别调用(session)所消耗的时间。

DB CPU:Amount of CPU time (in microseconds) spent on database user-level calls. This does not include the CPU time spent on instance background processes such as PMON.

这里就涉及一个问题,通过数据库用户调用的时间可以算出数据库繁忙的程度。首先来看看Elapsed Time为1664.70 mins 折算成秒为

Elasped Time=(1664*60+.7*60)/3600 hours

看下snapshot begin to end 时间为27 hours 44 mins 42 sec 刚好就是Elasped Time的时间。

系统有32个CPUs,因为并行作业的缘故,总计DB在CPU上消耗的时间应为32*1664.7 而DB Time的时间为在所有CPUs上消耗的时间106.76 mins。

从这里我们就可以算出数据库用户级别消耗的时间比:106.76/32*1664.7*100%≈0.2%

也就是说DB在CPU上的使用率为0.2%,idle rate达到99.8%。说明数据库负载相当的低。

DB Time既然为用户级别的调用,具体包含什么呢?我这里直接引用网上的公式。

DB Time= DB CPU + Non-Idle Wait + Wait on CPU queue

awr报告 解读_关于AWR报告的解析

通过查看CPU的负载大概可以印证这个数据。

第二部分

awr报告 解读_关于AWR报告的解析

报告概要的Cache Sizes很简单,主要包含buffer的尺寸、shared pool大小、标准块大小、日志buffer的大小。

正如我们所知的,Oracle DB采用LRU算法,将数据块内容缓存至Buffer中,进行数据的加速读取访问操作,而对于已经修改过的Dirty Buffer,又通过Cache和DBWR进程写回到数据文件中。因此对于一个OLTP(On-Line Transaction Processing)型数据库Buffer Cache是相当重要的。

数据库CPU负载状况分析

awr报告 解读_关于AWR报告的解析

DB Time(s)=DB Time/Elasped,这里得出的是近似值。可以理解为在数据库运行的这个时段中,DB在调用方面消耗的时间。

DB CPU(s) 表示DB Time时间内,有约0.1S是消耗在CPU上的。

而CPU繁忙程度则需要观察Instance CPU中的Busy CPU项

awr报告 解读_关于AWR报告的解析

可以看出该数据库该时间段内CPU 繁忙度为45.4%也是相当空闲的。

Transactions:说明数据库每秒处理事务的个数为71.2,那么这段时间段内总处理的事务数公式:

总事务数=Transactions*Elasped=71.2*1664.7*60=

事务的效能比

awr报告 解读_关于AWR报告的解析

Buffer Nowait:非等待Buffer事件比

Buffer Hit:Buffer命中率

Library Hit %:库命中率,主要针对数据库的字典信息的查询

Execute to Parse:用于解析的执行比

Parse CPU to Parse Elapsd:CPU解析在整个解析中的时间比

Redo Nowait:非等待Redo事件比

In-memory Sort:内存中的排序的事件比

Soft Parse:在总的解析次数中软解析比率

Latch Hit:闩的命中率

% Non-Parse CPU:非解析CPU使用比

共享池状态

awr报告 解读_关于AWR报告的解析

SQL with executions:超过1次被调用的SQL语句比例

Memory for SQL w/exec:内存中SQL写操作超过1次比例

占用时间前五的前台事件(Top 5 Timed Foreground Events)

awr报告 解读_关于AWR报告的解析

DB CPU:占用的时间6411秒, 在整个DB Time时间中占用比为100.09% 说明CPU消耗很高。

log file sync:写入日志文件时间为424秒 占比424/6411*100%近似值

direct path read:

SQL*Net message to client:客户端连接时间

cursor: pin S 游标时间

这里Avg wait(ms)的换算是有Time(s)/Waits获得的。上面反映的数据 如log file sync几乎为0,说在该时段内log file sync单次等待的时间近乎为0毫秒(实际值0.06ms) 。这里表明没有发生因日志的写导致的IO迟缓的问题。

按SQL执行耗时排序 awr报告 解读_关于AWR报告的解析

而DB CPU一般都发生在执行SQL语句和调用Procedure的时候,这里我们来观察SQL order by CPU

awr报告 解读_关于AWR报告的解析

上面的显示了SQL执行的时间占CPU Time前10的SQL语句,在上面Top 5 foreground events中CPU time总计消耗了6411秒,而SQL执行消耗DB CPU时间总计为5359.64秒(%Total)。占了约83.6%的比例。

%CPU是在语句执行消耗的时间中CPU Time的时间比,即CPU Time(s)/Elasped Time(s)

%IO是语句执行的IO时间和Elasped Time比,即IO Time(s)/Elasped Time(s) in Read,通过IO的比可以看到哪些语句的物理读占用比较多,同样可以在SQL order by Read表中获取

awr报告 解读_关于AWR报告的解析

通过Reads表可以观察到SQL的物理读的情况,这里的Elasped Time(s)就是用于计算%IO的基数。

awr报告 解读_关于AWR报告的解析

通过这个观察,可以看到其中IO读最多的一个语句是SQLPLUS工具中调用了一个语句,很明显该语句的参数了大量的物理读操作。那么就要考虑该语句的优化了。接下来可以观察SQL的逻辑读部分。Gets表示的是SQL语句在Buffer中获取的数据量

awr报告 解读_关于AWR报告的解析

里面统计的Total Buffer Gets总值为527,755,991,%Total=Buffer Gets/Total Buffer Gets

这里的SQL发生总Buffer Gets为784,209,002

To Be Continue…… : P

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/218755.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午11:33
下一篇 2026年3月17日 下午11:33


相关推荐

  • 六大AI模型性能深度评测:DeepSeek、ChatGPT等实力解密

    六大AI模型性能深度评测:DeepSeek、ChatGPT等实力解密

    2026年3月12日
    3
  • Ubuntu pycharm配置Conda环境

    Ubuntu pycharm配置Conda环境1 创建 conda 的虚拟环境首先 最好先创建一个 conda 的虚拟环境 因为虚拟环境之间不会产生一些不好的影响 使用 conda 创建虚拟环境请参考这篇文章 https blog csdn net article details 安装 pycharm 以及 anaconda 请参考 https blog csdn net artic

    2026年3月27日
    2
  • uIP resolv_found的实现

    uIP resolv_found的实现前言物联网的 IPV6 应用是一个趋势 contiki 是集成了 6lowpan 的一个集成开发工具 uip 是集成在内部的 支持 IPV6 以及 IPV4 这里先通过 IPV4 与平台连接建立一个数据通道 后续会跟进 IPV6 以及 6lowpan 的应用 而且 uip 不需要 OS 支持 以事件驱动的方式编程 占用的 RAM 以及 ROM 都符合嵌入式的需求 之前我们需要了解一些背景知识 1 http 的相关

    2026年3月26日
    1
  • java集合系列——java集合概述(一)[通俗易懂]

    在JDK中集合是很重要的,学习java那么一定要好好的去了解一下集合的源码以及一些集合实现的思想! 一:集合的UML类图(网上下载的图片) Java集合工具包位置是java.util.*二:集合工具的分析 1:Java集合是java提供的工具包,常用的数据结构:集合、链表、队列、栈、数组、映射等 2:java集合主要划分为五个部分: List列表、Set集合、Map映射、迭代器(It

    2022年2月26日
    59
  • 斯皮尔曼等级相关称名数据_斯皮尔曼和皮尔森区别

    斯皮尔曼等级相关称名数据_斯皮尔曼和皮尔森区别Spearman相关系数又称秩相关系数,是利用两变量的秩次大小作线性相关分析,对原始变量的分布不作要求,属于非参数统计方法,适用范围要广些。对于服从Pearson相关系数的数据亦可计算Spearman

    2022年8月5日
    6
  • Netty实战

    Netty实战Netty 实战此处观看更加使用 Netty 实现一个简单的 RPC 框架 RPC 是什么 原理是什么网上很多大神都有在总结 我就不再重复 如果对 RPC 还不是很了解的同学不妨先去了解一下基本的概念这个实例仅仅只是学习 Netty 的一个很小的样例 实际上 它离真正的 RPC 还差得远 写这个的目的仅仅只是为了熟悉 Netty 一个真正的 RPC 至少应该具备以下的功能 注册中心网络传输序列化和反序列化动态代理负载均衡传输协议需求 模仿 dubbo 消费者和提供者约定接口和协议 消费者远程调用提供者的服务

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号