47-Oracle ASH报告解读

Oracle等待事件分析与AWR和ASH报告 文章目录1 ASH和AWR1.1 ASH1.1.1 ash占用的内存大小1.2 AWR1.3 等待事件分析1.4 MMON进程与MMNL进程1.4.1 MMON进程1.4.2 MMML进程1.5 SYSAUX表空间1.6 采样频率和保留时间2 生成AWR和ASH报告2.1 生成AWR报告2.2 AWR的主要参数2.3 生成AWR报告2.4 ASH报告主要参数 1 ASH和AWR 1.1 ASH 用... 阅读详情

上一期生成了ASH报告后,就需要解读报告关键信息。ASH的使用可以快速定位瞬时性能问题。生产环境的场景时间紧、任务重,但是必须要结合具体业务分析,同时借助其他工具做报告做趋势分析。

一、ASH 技术原理​

​1. 核心机制​
  • ​采样原理​:ASH 每秒采样一次活动会话(状态为 ACTIVE,非空闲等待),由后台进程 ​MMNL​(Memory Monitor Light)执行
  • ​数据存储​:
    • ​内存​:采样数据存储在 SGA 的循环缓冲区(V$ACTIVE_SESSION_HISTORY),缓冲区大小由隐含参数 _ash_size 控制(默认约 1MB~30MB)
    • ​持久化​:MMNL 定期将内存数据写入 AWR 表 WRH$_ACTIVE_SESSION_HISTORY(视图为 DBA_HIST_ACTIVE_SESS_HISTORY),持久化比例由 _ash_disk_filter_ratio 控制(默认 1/10)
​采样偏差​:ASH 偏向捕获长时间等待事件(例如 100ms 事件被采样的概率是 10ms 事件的 10 倍)
2. 核心术语 

​术语​

​解释​

​分析意义​

​DB Time​

所有活动会话消耗的总时间(CPU + 等待时间)

衡量系统负载强度,高 DB Time 表明性能瓶颈

​Top Events​

排名前几的等待事件(如db file sequential read,

enq: TX - row lock contention)

定位系统级瓶颈(事件占比 >30% 需优先处理)

​Load Profile​

活动会话数、逻辑读/秒、物理读/秒等负载指标

判断资源压力(如物理读 >500/秒需优化 I/O)

​SQL ID​

消耗资源最多的 SQL 唯一标识

关联高负载 SQL 与等待事件

​Blocking Session​

阻塞其他会话的源头会话 ID

诊断锁争用问题(如行锁阻塞链)

 3. 关键隐含参数​

​参数名​

​默认值​

​作用​

_ash_sampling_interval

1000ms

采样间隔(毫秒)

_ash_enable

TRUE

启用/禁用 ASH 采样

_ash_sample_all

FALSE

是否采样空闲等待会话(通常仅ACTIVE会话)

_ash_disk_write_enable

TRUE

控制是否持久化到磁盘

4. ​顶级等待事件(Top User Events)​​

识别系统级瓶颈的核心区域

关键阈值​:
  • ​单事件占比 > 30%​​:需要立即处理
  • ​累计等待时间 > 50%​​:系统级瓶颈
5. ​高负载SQL(Top SQL with Top Events)​​
资源消耗最大的SQL语句分析

​字段​

​诊断意义​

​优化阈值​

SQL ID

SQL唯一标识

-

% Activity

SQL影响范围

>5%需优先优化

Executions

执行频率

>100/分钟需关注

Buffer Gets

逻辑读消耗

单次>10,000需优化

Scan Type

扫描方式

FTS(全表扫描)需建索引

关联等待事件

SQL瓶颈类型

关联Top Events分析

典型优化场景​:
  • 高频全表扫描 → 创建缺失索引
  • 高逻辑读SQL → SQL重写/绑定变量
  • 长时锁等待SQL → 业务逻辑优化
6. ​活动会话时间分布(Activity Over Time)​​
10等分时间片的负载趋势分析
​诊断要点​:
  • ​时段突增​:关联具体SQL/事件(如时段3的db file sequential read)
  • ​持续高峰​:系统容量不足
  • ​周期性波动​:定时任务影响
7. ​阻塞会话分析(Blocking Sessions)​​
锁争用问题诊断的核心区域
​关键字段​:
  • BLOCKING_SESSION:阻塞源会话ID
  • WAIT_TIME:等待时间(>1秒需关注)
  • EVENT:等待事件类型
  • SQL_ID:阻塞源SQL

二、ASH报告诊断四步法

分析流程​

定位核心瓶颈​:

  • 查看 Top Events,筛选占比 >30% 的等待事件(如行锁、I/O 等待)
  • 检查 Load Profile 中的活动会话数:若持续超过 CPU 核数 × 1.5,表明资源争用

关联资源消耗​:

  • 在 Top SQL with Top Events 中,找到高 % Activity(>5%)的 SQL,分析其执行计划与资源消耗
  • 示例 SQL(查找高逻辑读 SQL):
    --注意参数
    SELECT sql_id, SUM(buffer_gets) total_gets
    FROM dba_hist_active_sess_history
    WHERE sample_time BETWEEN :start AND :end
    GROUP BY sql_id ORDER BY total_gets DESC;

追溯阻塞链​:

  • 通过 Blocking Sessions 定位锁源头会话,结合 DBA_HIST_ACTIVE_SESS_HISTORY 分析锁类型(如 enq: TX - row lock contention)

时段负载分析​:

  • 使用 Activity Over Time 图表定位突增时段(如 10:05-10:08),关联该时段内的 SQL 与事件

 三、关键性能问题速查表

​现象​

​可能原因​

​验证方法​

​log file sync > 30%​

redo写入延迟

检查redo日志文件性能

​enq: TX - row lock contention​

行锁争用

分析阻塞会话链

​db file sequential read​

索引扫描I/O慢

检查磁盘IOPS/延迟

​buffer busy waits​

热块争用

检查对象访问模式

​CPU used when call started​

SQL效率低下

分析Top SQL逻辑读

四、案例解析​

​案例 1:Oracle 11g 行锁阻塞(enq: TX - row lock contention)​​
  • ​问题现象​:ASH 报告中 enq: TX - row lock contention 占比 87.62%
​分析过程​:
  • 在 Top Events 中确认行锁为顶级事件。
  • 通过关联的 SQL_ID 找到UPDATE 卡事务的 SQL:
    --更新业务侧,等待很久
    UPDATE HIS.FEI_ACCOUNT SET SHYUEDU = SHYUEDU - 1000 
    WHERE HUANGZHE_ID = 9028;
  • 溯源 BLOCKING_SESSION,发现未提交的事务持有行锁
  • 解决方案​:
    • 优化事务提交逻辑,避免长事务。
    • 添加索引减少行锁竞争范围

 

案例 2:Oracle 19c RAC 全局 I/O 瓶颈​
  • ​问题现象​:gc buffer busy 和 db file sequential read 等待事件在多个实例同时出现。
  • ​分析过程​:
  1. a.RAC ASH 报告显示跨实例的高 gc buffer busy。
  2. 关联 SQL 发现全表扫描频繁,导致全局缓存争用。
  3. 检查 Buffer Activity 部分,Consistent Gets 异常高
  • ​解决方案​:
    • 为高频查询字段添加索引,减少全表扫描。
    • 调整 db_cache_size 和 inmemory_size,优化缓冲区命中率
案例 3:短时 CPU 高负载(11g 单机)​​
  • ​问题现象​:用户反馈系统在 14:00-14:05 卡顿,但 AWR 未捕获异常。
  • ​分析过程​:
  1. 生成精确时段的 ASH 报告(14:00-14:05)。
  2. 发现 CPU used when call started 占比 95%,关联 SQL 为低效聚合查询。
  3. 该 SQL 执行计划使用全表扫描而非索引
  • ​解决方案​:
    • 优化 SQL,添加复合索引。
    • 调整 cursor_sharing 减少硬解析

五、ASH 的局限和最佳实践​

1. ​数据覆盖风险​:

  • 内存缓冲区仅保留约 1 小时数据,高并发时可能被覆盖,需及时捕获

2. ​RAC 环境要点​:

  • 使用 ashrpti.sql 生成全局报告,分析跨实例等待事件(如 gc buffer busy)
ASH报告分析最佳实践

采样时间选择​:

  • 问题发生期精确分析:5-15分钟
  • 趋势分析:30-60分钟

对比分析​:

-- 比如工作日 vs 周末,注意时间参数
SELECT event, COUNT(*) 
FROM dba_hist_active_sess_history
WHERE sample_time BETWEEN <高负载期间> AND <低负载期间>
GROUP BY event;

关联工具使用​:

  • 瞬时问题:ASH + SQL Monitor
  • 历史分析:ASH + AWR
  • 实时监控:ASH + OEM

保存策略优化​:

-- 延长ASH保留时间(单位:分钟)
EXEC DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings(
  retention => 4320    -- 3天保留期(默认=4320分钟)
);
【Oracle】Oracle活动会话历史(ASH)及报告解读 阅读详情

相关推荐

Oracle AWR报告深度分析实战:从等待事件到业务变更定位

AWR(Automatic Workload Repository)是Oracle数据库核心性能诊断基础设施,其本质是内核级时间序列采样系统,通过DBA_HIST_*历史视图持久化运行时指标。理解其原理需把握三个关键:快照粒度决定问题可见性,DB Time与等待事件的比值反映真实资源争用强度,而SQL执行链还原必须绑定plan_hash_value与快照ID以确保计划时效性。技术价值在于将静态报表转化为动态根因追踪工具,支撑IO瓶颈识别、锁争用归因及高频低耗SQL挖掘。典型应用场景包括OCP/OCM备考分析

weixin_32050773的博客 103

ORACLE 11G 性能诊断优化之ASH实战分析详解

ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。v$active_session_history视图提供了在实例级别抽取会话活动信息。活动会话每分钟会被抽样一次且被存储在sga中的循环缓冲区中.任何被连接到数据库且正等待一个不属于空闲等待事件的会话会被考虑是一个活动的会话。

alisande1的专栏 2936

Oracle DBA实战故障快照:RAC脑裂、归档暴增与监听异常诊断

Oracle数据库运维核心在于快速定位与止损,而非理论堆砌。本文围绕高可用架构(RAC)、事务一致性(EBS WIP非标工单)、服务可用性(监听器启动失败)三大高频场景,解析底层原理——如CSSD心跳超时机制、RECO进程卡死与UNDO事务关联、listener.ora隐藏格式缺陷。技术价值体现在将PPT‘战地笔记’转化为可执行命令链与自动化巡检逻辑,支撑银行核心账务、电信计费等强一致性业务系统。典型应用包括RAC节点驱逐根因分析、EBS WIP长事务识别、监听配置零感知重载。内容深度融合oracle eb

weixin_34072296的博客 221

Oracle活动会话历史(ASH)及报告解读

对于数据库运行期间的各种状态的实时监控以及相关性能数据捕获对于解决性能问题,提高整体业务系统运行效率是至关重要的。在Oracle数据库中,实时捕获相关性能数据是通过ASH工具来实现的。ASH通过每秒钟抽取活动会话样本,为分析在最近时刻的性能问题提供最直接最有效的依据。本文主要讲述ASH的用法及使用。

乐沙弥的世界 1万+

Oracle AWR与ASH性能报告深入解析

Oracle AWR与ASH性能报告深入解析 Oracle AWR与ASH性能报告深入解析 Oracle AWR与ASH性能报告深入解析 Oracle AWR与ASH性能报告深入解析

40分钟快速入门Dart基础(上)

针对final 和const 理解的有点模糊的可以参考这篇文章: 可以参考这里Flutter 知识梳理(Dart)-Dart中static final const 区别看是不是超级好上手,好操作~其实Dart的整个学习起来还是蛮简单的,对于有基础的老司机更简单一些。分分钟敲起来~这篇文章就简单的介绍到这里如何短时间快速入门Dart,避免入坑。由于是想让大家快速入门Flutter,所以针对上面的这些章节我们讲解的只是一些在开发Flutter 过程中常用的一些方法和函数。

qq_7813180 4572

国产数据库Oracle兼容性实战:从能用到敢用的关键突破

数据库Oracle兼容性是信创替代落地的核心技术门槛,本质是SQL语法、存储过程、事务机制与运维体系的全栈适配。其原理不仅涉及语法层映射,更依赖执行引擎行为一致性、锁管理逻辑还原及高可用架构语义对齐。技术价值在于降低迁移成本、保障业务连续性、满足等保与金融级强一致要求。典型应用场景覆盖政务OA、银行核心、制造ERP及医疗HIS等关键系统,尤其在TPC-C压测、分页查询、TO_DATE精度、ROWNUM陷阱、PL/SQL迁移等高频痛点中体现真实能力边界。本文聚焦生产环境验证的Oracle函数兼容性、分布式事务

weixin_34279579的博客 385

JESD204B系统设计实战:如何用SYSREF信号搞定多设备时钟同步(附时序图详解)

本文深入探讨了JESD204B系统中SYSREF信号在多设备时钟同步中的关键作用与实现技巧。通过详细分析SYSREF信号的生成、PCB布局和时序调整,提供了一套完整的解决方案,帮助工程师解决高速数据转换器与FPGA协同工作中的时钟同步问题。文章还包含时序图详解和实测调试技巧,助力提升系统性能。

weixin_29313239的博客 456

MagicAnimate 完整指南:一张静态照片生成连贯人物动画的 6 步流程

MagicAnimate 是一个基于扩散模型(通过逐步去噪生成图像的生成式模型)的 AI 动画生成工具:输入一张静态人物照片和一段驱动视频,它就能让照片里的人物按照视频中的动作动起来,并保持时间一致性——帧与帧之间不闪烁、不跳变,人物长相和服装也保持稳定。项目出自 CVPR 2024 论文 *MagicAnimate: Temporally Consistent Human Image Anima

gitblog_01112的博客 1046

告别‘打架’的检测头:手把手教你用PyTorch实现YOLOv11解耦头(附完整代码)

本文详细解析了YOLOv11解耦检测头的创新设计与PyTorch实现,通过解耦分类和回归任务,显著提升目标检测性能。文章包含完整的代码实现、架构设计解析及工程调优技巧,帮助开发者深入理解并应用这一先进技术。

weixin_29031057的博客 301

从零到一:YOLOv8在边缘设备上的轻量化部署实战

本文详细介绍了YOLOv8在边缘设备上的轻量化部署实战,涵盖模型优化、TensorRT加速、剪枝与知识蒸馏等关键技术。通过工业质检和智能门禁项目案例,展示了如何将YOLOv8高效部署到树莓派、Jetson Nano等资源受限设备,显著提升推理速度和降低内存占用。文章还提供了动态分辨率调整、多模型级联部署等实用技巧,助力开发者实现边缘AI应用的高效落地。

weixin_29040367的博客 379

oracle ash介绍,循序渐进Oracle - 全面认识Oracle ASH

从Oracle 10g开始,Oracle引入了ASH新特性,也就是活动Session历史信息记录(Active Session History,ASH)。如果说v$session_wait_history是一小步,那么ASH则是Oracle迈出根本变革的一大步。本文节选自一、ASH概述ASH以v$session为基础,每秒钟采样一次,记录活动会话等待的事件。因为记录所有会话的活动是非常昂贵的,所以...

weixin_34000790的博客 1426

手把手教你玩转RISC-V指令集​​​专栏--​​1.2 对比x86/ARM:RISC-V的三大核心优势(开放、灵活、可扩展)​

​:RISC-V以“开放打破垄断、灵活适配场景、扩展定义未来”的三大优势,正在重塑计算架构格局。其核心价值不仅是技术革新,更是对全球半导体产业链话语权的重新分配。

amy_mhd的博客 130

Oracle 性能优化之AWR、ASH和ADDM(含报告生成和参数解读)

Oracle 性能优化工具,ASW,ASH和ADDM,含生成报告的使用方式,报告的关键参数解答案例。

Jay的个人博客 4566

在 Fiori Elements Object Page 的表格中用 UI.Hidden 隐藏列:语义、边界与落地实践全解析

摘要: Fiori Elements的Object Page表格中,UI.Hidden注解支持静态和动态隐藏列。动态隐藏分为两种:基于父实体属性隐藏整列,或基于子实体属性按行隐藏单元格。关键约束包括:支持服务端操作的列禁止使用动态隐藏,否则会导致UX不一致。ABAP CDS不支持路径式UI.Hidden,需改用XML注解。该功能需与UI.Importance、个性化等机制明确区分,避免混淆。对于可能参与排序/过滤的列,建议仅使用静态隐藏。实际应用中需注意注解位置(整列或单元格级)和业务场景的匹配。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 205

Python:爬取数据出现response.status_code为403解决方法

目录前言1. 原理2. 代码 前言 出现403的返回结果 主要是有些服务器为了防止访问量过大,承受服务器的压力,或者是拒绝你的访问。服务器接收到这个信息,理应返回了这个403的信息 在前一块的代码中解决了 Python:爬取数据出现response.status_code为418解决方法 如果还出现了403的访问错误 可以通过如下解决 1. 原理 服务器拒绝访问,可以通过给服务器登录,获取当前的cookie来得到网址的信任。得以爬取该网址的信息 在head头中加入cookie的信息 具体怎么查找该cooki

码农研究僧的博客 1万+

46-Oracle ASH-报告生成

小伙伴们,Oracle ASH(Active Session History)日常排查性能问题的多不多。当业务突然卡顿、告警频发时,ASH快速定位问题(每秒采样活动会话的等待事件、SQL_ID和阻塞关系,直接透视数据库的实时状态),这个用起来还是很顺手的。ASH是DBA的灭火器,尤其在秒级故障定位中无可替代。不过由于数据保存时间有时效数据容易被覆盖哦。

远方的专栏 1508

[游戏排查] Baldur‘s Gate 3 加载完成即崩溃?五步排查帮你快速定位问题

《博德之门3》加载崩溃问题解决方案:针对游戏进度条走完后闪退的情况,提供五步排查法。首先清除LevelCache缓存(成功率最高),其次检查Mod兼容性,然后切换Vulkan/DX11渲染API,再排查存档损坏问题,最后可删除配置目录(需备份存档)。重点提示Steam验证无法解决此类问题,建议按步骤顺序排查,多数情况下前两步即可解决问题。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 3261

oracle ash说明,ASH报告解读

Top EventsTop User EventsEventEvent Class% ActivityAvg Active SessionsCPU + Wait for CPUCPU69.832.75cursor: pin S wait on XConcurrency22.500.89db file sequential readUser I/O3.360.13这一部分是用户会话的等待事件的信息。...

weixin_35867508的博客 2229

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Oracle生成ASH报告

1、ASH (Active SessionHistory)ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样,采样工作由新引入的后台进程MMNL来完成。 v$active_session_history视图提供了在实例级别抽取会话活动信息。活动会话每分钟会被抽样一次且被存储在sga中的循环缓冲区中.任何被连接到数据库且正等待一个不属于空闲等待事...

weixin_30915951的博客 267

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Oracle分析报告ash,Oracle ---- 性能调查之ASH(一)

在ORACLE性能问题调查时,有价值的诊断情报有很多:STATSPACK,AWR,ASH,SYSTEMSTATE DUMP等等。每一种都在特定的场景起到重要的作用。其中最多的一个场景就是问题发生后采用了紧急对应,暂时回避了问题,但是问题的原因需要详细的调查。这时候,ASH就是一个非常有效的情报。为什么呢?因为在这种情况下,无论是客户还是Support工程师,最想知道的就是到底发生了啥问题。ASH就...

weixin_39731456的博客 412

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

oracle ash介绍,Oracle ---- 性能调查之ASH(一)

在ORACLE性能问题调查时,有价值的诊断情报有很多:STATSPACK,AWR,ASH,SYSTEMSTATE DUMP等等。每一种都在特定的场景起到重要的作用。其中最多的一个场景就是问题发生后采用了紧急对应,暂时回避了问题,但是问题的原因需要详细的调查。这时候,ASH就是一个非常有效的情报。为什么呢?因为在这种情况下,无论是客户还是Support工程师,最想知道的就是到底发生了啥问题。ASH就...

weixin_33246707的博客 1696

Oracle SQL调优系列之AWR报告简介

文章目录AWRASHADDMAWRSQRPT AWR 进入数据库 sqlplus / as sysdba 查看用户 show parameter db_name 开始压测后执行 exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT (); 可以通过dba_hist_wr_control查看当前的配置情况,当前awr为每1小时做一次数据快照,保留时间为7天...

Nicky's blog 5823

Oracle ASH分析详解

一. ASH(Active Session History) ASH以V$SESSION为基础,每秒采样一次,记录活动会话等待的事件。不活动的会话不会采样, 采样工作由新引入的后台进程MMNL完成。 v$active_session_history视图提供了在实例级别抽取会话活动信息。活动会话每分钟会被抽样一次且被存储在sga中的循环缓冲区中。任何被连接到数据库且正等待一个不属于空闲等待时间的

gumengkai的博客 1万+

oracle awr与ash性能报告深入解析,Oracle AWR 与 ASH 性能报告深入解析

《Oracle AWR 与 ASH 性能报告深入解析》一 数据库版本LEO1@LEO1> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition R...

weixin_28731223的博客 1129

Oracle数据库 ASH视图详解

数据来源:MMON进程收集数据库实例性能及会话活动的大量统计数据到SGA,并定期存储到SM/AWR组件中的数据字典用途:显示采样的会话活动信息,动态视图中每秒一行记录,历史视图中每10秒一行记录结构:通过用户手册了解视图的结构信息。与v$session视图的信息近似,但不包含inactive状态的会话信息。

weixin_tank88921的博客 1412
上一篇: 46-Oracle ASH-报告生成
下一篇: 48-Oracle CDB下的SID-实例名-服务名
远方1609
博客等级 码龄22年 577粉丝 121原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值