当前位置: 首页 > article >正文

性能诊断工具AWR配置策略与报告内容解析

AWR(Automatic Workload Repository)是 Oracle 数据库中的一个重要性能诊断工具。AWR 会按照固定的时间间隔自动收集数据库系统的性能统计信息。这些信息涵盖了数据库运行状态的方方面面,像SQL 执行情况、系统资源利用率、等待事件等。AWR抓取的是一段周期内的综合数据,并非即时的零散样本,这种机制保证数据能反映数据库在实际生产负载下的真实表现。

AWR 数据存储在数据库内部的特定表空间当中,主要由 SYSAUX 表空间承载。保存着不同时间点的性能快照,这些快照如同一张张照片,定格了对应时刻数据库各类性能指标的状态,为后续对比、追溯问题根源提供基础。每个快照都带有详细的时间戳标识,方便使用者精准定位到特定时段的数据库运行情况。

一、AWR配置策略

 1. 调整AWR产生snapshot的频率和保留策略

 AWR配置都是通过dbms_workload_repository包进行配置,如将收集间隔时间改为30 分钟一次,并且保留31天时间(单位都是分钟):

 SQL> exec 

dbms_workload_repository.modify_snapshot_settings

(interval=>30, retention=>31*24*60);

2. 关闭AWR:

把interval设为0则关闭自动捕捉快照:

SQL> exec 

dbms_workload_repository.modify_snapshot_settings(interval=>0);

3. 手工创建一个快照:

SQL> exec 

DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

如果数据库的某些参数或应用程序做了调整,可以手工即时的

创建一个快照更有利于数据的统计分析。

4. 查看快照:

SQL> select * from sys.wrh$_active_session_history

5. 手工删除指定范围的快照

SQL> exec 

DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE

(low_snap_id => 2889, high_snap_id => 3000, dbid => 2774909533);

6. 生成awr报告:

awrrpt.sql :生成指定快照区间的统计报表;

awrrpti.sql :生成指定数据库实例,并且指定快照区间的统计报表;

awrsqlrpt.sql :生成指定快照区间,指定SQL语句(实际指定的是该语句的SQLID)的统计报表;

awrsqrpi.sql :生成指定数据库实例,指定快照区间的指定SQL语句的统计报表;

awrddrpt.sql :指定两个不同的时间周期,生成这两个周期的统计对比报表;

awrddrpi.sql :指定数据库实例,并指定两个的不同时间周期,生成这两个周期的统计对比报表;

二、AWR报告的主要内容:

1.前言部分:

这是AWR报告的第一段,用于描述环境包括数据库名,DBID,数据库版本,是否为RAC节点,快照报告的采集时间等。

2. 综述部分:

包含等待事件段,Load Profile段,实例效率统计段,Shared Pool统计段,Cache Size段,其中最重要的是等待事件段,它告诉我们在快照时间内数据库遇到哪些性能瓶颈,它们将是性能调整或问题诊断的主要候选对象。

常见等待事件介绍: 

1)db file sequential read 文件顺序读取 

这一事件通常显示与单个数据块相关的读取操作(如索引读取)。如果 这个等待事件比较显著,可能表示在多表连接中,表的连接顺序存在问题 ,可能没有正确的使用驱动表;或者可能说明不加选择地进行索引。 

在大多数情况下我们说,通过索引可以更为快速的获取记录,所以对 于一个编码规范、调整良好的数据库,这个等待很大是很正常的。但是在 很多情况下,使用索引并不是最佳的选择,比如读取较大表中大量的数据 ,全表扫描可能会明显快于索引扫描,所以在开发中我们就应该注意,对于这样的查询应该进行避免使用索引扫描。

2) db file scattered read-DB 文件分散读取

这种情况通常显示与全表扫描相关的等待。当数据库进行全表扫时,基于性能的考虑,数据会分散(scattered)读入Buffer Cache。如果这个等待事件比较显著,可能说明对于某些全表扫描的表,没有创建索引或者没有创建合适的索引,我们可能需要检查这些数据表已确定是否进行了正确的设置。然而这个等待事件不一定意味着性能低下,在某些条件下Oracle 会主动使用全表扫描来替换索引扫描以提高性能,这和访问的数据量有关,在CBO 下Oracle 会进行更为智能的选择,在RBO 下Oracle 更倾向于使用索引。因为全表扫描被置于LRU(Least Recently Used,最近最少适用)列表的冷端(cold end),对于频繁访问的较小的数据表,可以选择把他们Cache 到内存中,以避免反复读取。当这个等待事件比较显著时,可以结合v$session_longops 动态性能视图来进行诊断,该视图中记录了长时间(运行时间超过6 秒的)运行的事物,可能很多是全表扫描操作(不管怎样,这部分信息都是值得我们注意的)。

例:

关于10月21号BOSS全省营业系统故障的处理及分析报告中:

数据库出现 enq: TX - allocate ITL entry 等待事件,某些SQL出现堵塞等待的现象。经确认,该异常为应用程序引发。可能是由于突然有大批量数据导入导致出现ITL的WAITS。该异常直接导致CRM程序出现异常。

3)SQL部分:

无效的SQL语句是性能不好的主要原因,这部分对这段时间区间内SQL按照执行时间,逻辑读,磁盘读等指标进行了分类和排序,和STATSPACK不同的是,从AWR报告中可以直接查到该SQL的文本和发送请求的客户端进程信息,极大的提高了SQL分析的效率。

SQL ordered by Elapsed Time:记录了执行总和时间的TOP SQL(请注意是监控范围内该SQL的执行时间总和,而不是单次SQL执行时间 Elapsed Time = CPU Time + Wait Time)。

Elapsed Time(S): SQL语句执行用总时长,此排序就是按照这个字段进行的。注意该时间不是单个SQL跑的时间,而是监控范围内SQL执行次数的总和时间。单位时间为秒。

Elapsed Time = CPU Time + Wait Time

CPU Time(s): 为SQL语句执行时CPU占用时间总时长,此时间会小于等于Elapsed Time时间。单位时间为秒。

Executions: SQL语句在监控范围内的执行次数总计。

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

% Total DB Time: 为SQL的Elapsed Time时间占数据库总时间的百分比。

SQL ID: SQL语句的ID编号,点击之后就能导航到下边的SQL详细列表中,点击IE的返回可以回到当前SQL ID的地方。

SQL Text: 简单的sql提示,详细的需要点击SQL ID。

SQL ordered by CPU Time: 记录了执行占CPU时间总和时间最长的TOP SQL(请注意是监控范围内该SQL的执行占CPU时间总和,而不是单次SQL执行时间)。

SQL ordered by Gets: 记录了执行占总buffer gets(逻辑IO)的TOP 

SQL(请注意是监控范围内该SQL的执行占Gets总和,而不是单次SQL执行所占的Gets)。

SQL ordered by Reads: 记录了执行占总磁盘物理读(物理IO)的TOP SQL(请注意是监控范围内该SQL的执行占磁盘物理读总和,而不是单次SQL执行所占的磁盘物理读)。

SQL ordered by Executions: 记录了按照SQL的执行次数排序的TOP SQL。该排序可以看出监控范围内的SQL执行次数。

SQL ordered by Parse Calls: 记录了SQL的软解析次数的TOP SQL。

点击sql id可以看到具体的sql语句的内容,可以放到查看其具体的执行计划,分析语句的索引使用情况及cost的高低,以便调优sql语句。

4)段统计部分:

告诉哪些段(包括表和索引)在快照期间经历最高的磁盘读操作,这些信息可以帮助我们决定是否需要重建索引,或对段进行分区来减少发生在这些数据文件上的I/O。

 5)收集AWR报告的级别:

AWR的行为受到初始化参数STATISTICS_LEVEL的影响。这个参数有三个值:

BASIC:awr统计的计算和衍生值关闭.只收集少量的数据库统计信息.

TYPICAL:(默认值)只有部分的统计收集.他们代表需要的典型监控oracle数据库的行为. 

ALL : 所有可能的统计都被捕捉. 并且有操作系统的一些信息.这个级别的捕捉应该在很少的情况下,比如你要更多的sql诊断信息的时候才使用。

SQL> show parameter statistics_level

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

statistics_level string TYPICAL

6)基线介绍:

基线(baseline)是一种机制,可以在重要时间的快照信息集做标记。一个基线定义在一对快照之间,快照通过他们的快照序列号识别.每个基线有且只有一对快照。一次典型的性能调整实践从采集量度的基线集合、作出改动、然后采集另一个基线集合开始,可以比较这两个集合来检查所作的改动的效果。在 AWR 中,对现有的已采集的快照可以执行相同类型的比较。

Baseline记录了baseline所指定的快照ID,当维护awr的mmon进程在清除过期的快照时,在baseline中的快照则不会被删除,当数据库做了一段时间的调优后,awr可以用baseline保留的快照与当前系统的awr报告进行对比。

相关文章:

性能诊断工具AWR配置策略与报告内容解析

AWR(Automatic Workload Repository)是 Oracle 数据库中的一个重要性能诊断工具。AWR 会按照固定的时间间隔自动收集数据库系统的性能统计信息。这些信息涵盖了数据库运行状态的方方面面,像SQL 执行情况、系统资源利用率、等待事件等。AWR抓取…...

Tailwind CSS 实战,基于 Kooboo 构建 AI 对话框页面(三):实现暗黑模式主题切换

基于前两篇的内容,为页面添加主题切换功能,实现网站页面的暗黑模式: Tailwind css实战,基于Kooboo构建AI对话框页面(一)-CSDN博客 Tailwind css实战,基于Kooboo构建AI对话框页面(…...

OleDbParameter.Value 与 DataTable.Rows.Item.Value 的性能对比

OleDbParameter.Value 与 DataTable.Rows.Item.Value 的性能对比 您提到的两种赋值操作属于不同场景,它们的性能和稳定性取决于具体使用方式。下面从几个维度进行分析: 1. 操作本质对比 (1)OleDbParameter.Value 用途&#xf…...

Unity3D ET框架游戏脚本系统解析

前言 ET框架在Unity3D中实现的GamePlay脚本系统是一种革命性的、基于ECS(实体-组件-系统)架构的设计,它彻底改变了传统的基于MonoBehaviour的游戏逻辑编写方式。其核心思想是追求高性能、高解耦、易热更新,特别适合大型复杂的网络…...

函数的定义、调用、值传递、声明、非安全函数

函数 函数(英文“function”)把一些经常用到的代码封装起来,这样可以减少一些冗余代码、重复的代码。一个大的程序,它是由很多很多程序块组成的,每个模块实现一个特定的功能。 函数的定义 格式 英文版 return_typ…...

MySQL 8.0 OCP 英文题库解析(十一)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题91~100 试题91…...

机器学习算法-k-means

今天我们用 「超市顾客分组」 的例子来讲解K-means算法,从原理到实现一步步拆解,保证零基础也能懂! 🛒 例子背景 假设你是超市经理,手上有顾客的以下数据: 顾客ID每月消费金额(元)…...

ADQ36-2通道2.5G,4通道5G采样PXIE

ADQ36是一款高端12位四通道灵活数据采集板,针对高通道数科学应用进行了优化。ADQ36具有以下特性: 4 / 2模拟输入通道每通道2.5 / 5 GSPS7gb/秒的持续数据传输速率两个外部触发器通用输入/输出(GPIO)ADQ36数字化仪包括固件FWDAQ ADQ36简介 特…...

LLM:decoder-only 思考

文章目录 前言一、KV-cache1、为什么使用KV-cache2、KV-cache的运作原理 二、Decoder-only VS Encoder-Decoder1、Decoder-only2、Encoder-Decoder 三、Causal LM VS PrefixLM总结 前言 decoder-only模型是目前大模型的主流架构,由于OpenAI勇于挖坑踩坑&#xff0c…...

数字创新智慧园区建设及运维方案

该文档是 “数字创新智慧园区” 建设及运维方案,指出传统产业园区存在管理粗放等问题,“数字创新园区” 通过大数据、AI、物联网、云计算等数字化技术,旨在提升园区产业服务、运营管理水平,增强竞争力,实现绿色节能、高效管理等目标。建设内容包括智能设施、核心支撑平台、…...

【科研绘图系列】R语言绘制森林图(forest plot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载导入数据数据预处理画图系统信息介绍 本文介绍使用R语言绘制森林图(forest plot)的方法。首先加载必要的R包(grid、forestploter、openxlsx、stringr),导入并预处…...

Springcloud Alibaba自定义负载均衡详解

主要说一下springcloud alibaba 在使用nacos注册中心过程中&#xff0c;请求服务负载均衡的配置方法 引入依赖包 这个依赖包是springcloud在新版本的负载均衡实现&#xff0c;2020版本以上 <dependency><groupId>org.springframework.cloud</groupId><ar…...

深度学习---负样本训练

一、负样本的本质与核心作用 1. 定义与范畴 负样本&#xff08;Negative Sample&#xff09;是与目标样本&#xff08;正样本&#xff09;在语义、特征或任务目标上存在显著差异的样本。其核心价值在于通过对比学习引导模型学习样本间的判别性特征&#xff0c;而非仅记忆正样本…...

SpringAI+DeepSeek大模型应用开发实战

内容来自黑马程序员 这里写目录标题 认识AI和大模型大模型应用开发模型部署方案对比模型部署-云服务模型部署-本地部署调用大模型什么是大模型应用传统应用和大模型应用大模型应用 大模型应用开发技术架构 SpringAI对话机器人快速入门会话日志会话记忆 认识AI和大模型 AI的发…...

【Python Cookbook】文件与 IO(一)

文件与 IO&#xff08;一&#xff09; 1.读写文本数据2.打印输出至文件中3.使用其他分隔符或行终止符打印4.读写字节数据5.文件不存在才能写入 1.读写文本数据 你需要读写各种不同编码的文本数据&#xff0c;比如 ASCII&#xff0c;UTF-8 或 UTF-16 编码等。 使用带有 rt 模式…...

STM32 HAL库函数学习 GPIO篇

1、void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, const GPIO_InitTypeDef *pGPIO_Init) GPIO外设属于是任何芯片的最基础功能 &#xff0c;STM32各个系列的GPIO初始化都是一致的&#xff0c;有不同的是部分系列在IO复用使用了单独一个成员属性Alternate 来表明这个IO的具体复用功…...

如何以 9 种方式将照片从 iPhone 传输到笔记本电脑

您的 iPhone 可能充满了以照片和视频形式捕捉的珍贵回忆。无论您是想备份它们、在更大的屏幕上编辑它们&#xff0c;还是只是释放设备上的空间&#xff0c;您都需要将照片从 iPhone 传输到笔记本电脑。幸运的是&#xff0c;有 9 种方便的方法可供使用&#xff0c;同时满足 Wind…...

根据jvm源码剖析类加载机制

根据jvm源码剖析类加载机制 java Test.class之后的大致流程 java Test.class ----> 对于windows操作系统 ----> java.exe调用jvm.dll文件创建JVM&#xff0c; ----> 在创建JVM中先由C的代码创建Boostarp&#xff08;引导&#xff09;类加载器&#xff0c; ----&g…...

Mixly1.0/2.0/3.0 (windows系统) 安装教程及使用常见问题解决

大家好&#xff01;长期以来&#xff0c;不少用户在使用 Mixly 软件过程中遇到了各类问题。为了帮助大家更顺畅地使用该软件&#xff0c;齐护机器人工程师结合自身丰富经验&#xff0c;精心总结并推出了本期教程。在本教程中&#xff0c;我们将从 Mixly 图形化编程软件的安装步…...

DDS通信中间件——DDS-TSN规范

DDS通信中间件——DDS-TSN规范 做了十年DDS通信中间件产品的程序员和大家分享一下对DDS这套规范的个人理解。预期本系列文章将包括以下内容陆续更新&#xff1a; DDS规范概述DCPS规范解读 & QoS策略XTypes规范解读RTPS规范解读DDS安全规范解读DDS-RPC规范解读&#xff08…...

JWT安全:弱签名测试.【实现越权绕过.】

JWT安全&#xff1a;假密钥【签名随便写实现越权绕过.】 JSON Web 令牌 (JWT)是一种在系统之间发送加密签名 JSON 数据的标准化格式。理论上&#xff0c;它们可以包含任何类型的数据&#xff0c;但最常用于在身份验证、会话处理和访问控制机制中发送有关用户的信息(“声明”)。…...

MATLAB实现井字棋

一、智能决策系统与博弈游戏概述 &#xff08;一&#xff09;智能决策系统核心概念 智能决策系统&#xff08;Intelligent Decision System, IDS&#xff09;是通过数据驱动和算法模型模拟人类决策过程的计算机系统&#xff0c;核心目标是在复杂环境中自动生成最优策略&#…...

Baklib知识中台加速企业服务智能化实践

知识中台架构体系构建 Baklib 通过构建多层级架构体系实现知识中台的底层支撑&#xff0c;其核心包含数据采集层、知识加工层、服务输出层及智能应用层。在数据采集端&#xff0c;系统支持对接CRM、ERP等业务系统&#xff0c;结合NLP技术实现非结构化数据的自动抽取&#xff1…...

在AIX环境下修改oracle 11g rac的IP地址

0、当前环境 由于机房网络变更&#xff0c;客户要修改现在RAC的网络地址&#xff0c;这里记录一下。 主机操作系统&#xff1a;AIX 7.2 数据库版本&#xff1a;11.2.0.4 rac 数据库实例名&#xff1a;orcl1/orcl2 当前hosts文件配置 192.168.56.10 rac1 192.168.56.11 …...

VMware Tools 手动编译安装版

OWASPBWA安装VMware tools 安装时&#xff0c;显示如下提示 官方安装手册参考&#xff1a;https://knowledge.broadcom.com/external/article?legacyId1014294 按照提示&#xff0c;下载linux.iso文件&#xff0c;并连接到虚拟机的CDROM里&#xff0c;状态勾选已连接&#x…...

android平台驱动开发(六)--Makefile和Kconfig简介

Makefile&#xff1a; 1.编译进内核&#xff0c;还是以模块方式加载 模块方式编译成ko,通常是自己添加脚本方式insmod ,android 平台通常默认有modprobe加载&#xff0c;不需要额外添加insmod脚本 lsmod |grep test 可以查看是否安装成功 rmmod test-m.ko 可以删除ko 2.多…...

【手写系列】手写线程池

PS&#xff1a;本文的线程池为演示 Demo&#xff0c;皆在理解线程池的工作原理&#xff0c;并没有解决线程安全问题。 最简单一版的线程池 public class MyThreadPool {// 存放线程&#xff0c;复用已创建的线程List<Thread> threadList new ArrayList<>();publ…...

python学习打卡day40

DAY 40 训练和测试的规范写法 知识点回顾&#xff1a; 彩色和灰度图片测试和训练的规范写法&#xff1a;封装在函数中展平操作&#xff1a;除第一个维度batchsize外全部展平dropout操作&#xff1a;训练阶段随机丢弃神经元&#xff0c;测试阶段eval模式关闭dropout 作业&#…...

redis高并发问题

Redlock原理和存在的问题 Redlock 基于以下假设&#xff1a; 有多个&#xff08;一般建议是 5 个&#xff09;彼此独立的 Redis 实例&#xff08;不是主从复制&#xff0c;也不是集群模式&#xff09;&#xff0c;它们之间没有数据同步。客户端可以与所有 Redis 实例通信。 …...

Live Helper Chat 安装部署

Live Helper Chat(LHC)是一款开源的实时客服聊天系统,适用于网站和应用,帮助企业与访问者即时沟通。它功能丰富、灵活、可自托管,常被用于在线客户支持、销售咨询以及技术支持场景。 🧰 系统要求 安装要求 您提供的链接指向 Live Helper Chat 的官方安装指南页面,详细…...