Wrayの知识库 Wrayの知识库
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
首页
  • Java 基础
  • Java 集合
  • Java 并发
  • Java IO
  • JVM
  • Spring Framework
  • Spring Boot
  • Spring Cloud
  • Spring Security
  • MySQL
  • Redis
  • 计算机基础
  • 操作系统原理
  • Linux
  • MacOS
  • Windows
  • 系统工程与研究专题
  • AI 基础
  • 大模型基础
  • Prompt 工程
  • RAG 检索增强生成
  • Agent 智能体
  • AI 应用开发
  • AI 工程化
  • AI 安全与治理
  • AI 面试与设计题
  • 纸质书
  • 电子书
  • 学习课程
疑难杂症
GitHub (opens new window)
  • 数据库概述
  • MySQL

  • Redis

  • Oracle

    • Oracle概述
    • Oracle版本与部署选型
    • Oracle安装配置与客户端工具
    • Oracle体系结构与实例数据库
    • Oracle内存结构SGA与PGA
    • Oracle进程与后台任务
    • Oracle存储结构与表空间
    • Oracle数据类型与字符集
    • Oracle Schema对象与数据建模
    • SQL基础与Oracle语法特性
    • PLSQL基础与包过程函数
    • Oracle事务与一致性读
    • Oracle锁闩锁与并发控制
    • Undo Redo与归档日志
    • Oracle索引结构与设计
    • 执行计划与DBMS_XPLAN
    • 优化器统计信息与SQL调优
    • AWR ASH与性能诊断
    • Oracle等待事件与故障排查
      • 1. 学习目标与定位
      • 2. 核心概念总览
      • 3. 底层原理详解
      • 4. 关键机制拆解
        • 4.1. V$SESSION 与当前现场
        • 4.2. V$SQL、ASH 与历史证据
        • 4.3. Alert Log 与 ADRCI
        • 4.4. CPU、IO、网络和阻塞链分辨
      • 5. 功能模块细节补充
        • 5.1. V$SESSION
        • 5.2. V$SQL
        • 5.3. V$ACTIVESESSIONHISTORY
        • 5.4. Alert Log
        • 5.5. ADRCI
        • 5.6. Blocking Session
        • 5.7. IO Wait
        • 5.8. CPU Wait
        • 5.9. Network Wait
      • 6. 开发人员重点提醒
      • 7. 运维人员重点提醒
      • 8. 典型问题与排查
      • 9. 实践建议与检查清单
      • 10. 阶段小结
    • RMAN备份恢复与闪回技术
    • Data Guard与灾备架构
    • RAC集群与服务高可用
    • ASM存储与文件管理
    • Multitenant CDB与PDB
    • 分区表与VLDB实践
    • 数据泵SQLLoader与数据迁移
    • Oracle安全审计与权限治理
    • Oracle开发连接池与JDBC实践
    • JSON向量与多模型能力
    • Oracle运维规范与面试设计题
目录

Oracle等待事件与故障排查

Oracle 排障的核心不是猜参数,而是沿等待事件、会话状态、阻塞链和系统资源建立证据。一次故障要能区分 SQL 问题、锁问题、IO 问题、网络问题和后台进程问题。

# 1. 学习目标与定位

维度 内容
难度层级 高级排障
核心目标 从底层运行链路理解本篇主题,能把概念、SQL、指标、故障和工程取舍连起来
适合人群 开发人员提供业务时间、请求链路和 SQL;运维人员通过等待事件和动态性能视图定位根因。

# 2. 核心概念总览

Oracle等待事件与故障排查
├─ V$SESSION
├─ V$SQL
├─ V$ACTIVE_SESSION_HISTORY
├─ Alert Log
├─ ADRCI
├─ Blocking Session
├─ IO Wait
├─ CPU Wait
└─ Network Wait

这张图只用来定位本章范围。正文不会把每个词机械拆成固定问答,而是按 Oracle 的真实运行机制解释它们之间如何协作、在哪里影响开发、在哪里影响运维。

# 3. 底层原理详解

等待事件描述会话正在等什么资源。Oracle 把大量内部状态暴露为等待事件,使排障能够从“感觉慢”进入“等待什么、等多久、谁造成”的分析。

故障排查需要时间线。应用错误、数据库 alert log、ASH、系统 CPU/IO、存储告警、网络告警和发布记录必须放到同一个时间轴上。

不是所有等待都是坏事。空闲等待正常存在,短暂 IO 等待也正常。关键是看等待是否占据数据库时间、是否集中在核心 SQL、是否和业务故障时间吻合。

# 4. 关键机制拆解

# 4.1. V$SESSION 与当前现场

V$SESSION 能看到当前会话状态、SQL_ID、等待事件、阻塞会话、模块和登录信息。故障现场第一步通常是保存活动会话快照,而不是马上杀会话。

开发人员如果能提供业务请求号、用户、时间和 SQL 入口,DBA 就能更快从 V$SESSION/ASH 找到对应会话。

# 4.2. V$SQL、ASH 与历史证据

V$SQL 提供共享池中的 SQL 统计,ASH 提供活动会话采样。短时故障可能已经不在 V$SESSION 中,但仍能在 ASH 中留下痕迹。

历史分析要注意样本和快照限制。ASH 是采样,不是完整日志;V$SQL 可能因游标老化而丢失。

# 4.3. Alert Log 与 ADRCI

Alert Log 记录实例启动关闭、后台错误、归档异常、数据文件问题、ORA-00600/07445 等重要事件。ADRCI 用于查看和打包诊断信息。

遇到实例级错误时,不要只截取应用异常。alert log、trace、incident package 往往才是根因入口。

# 4.4. CPU、IO、网络和阻塞链分辨

CPU 等待高时看运行队列、硬解析、并行和高 CPU SQL;IO 等待高时看对象访问、存储延迟和缓存命中;网络等待高时看返回行数、客户端消费和链路延迟;阻塞等待则看持锁者。

排障的质量取决于分类准确。把锁等待当 IO 调,把客户端慢当数据库慢,都会浪费窗口。

# 5. 功能模块细节补充

本节围绕概念图中的模块逐个补充底层细节,重点讲它们在 Oracle 运行链路中的位置和相互关系,而不是按固定角色模板拆分。

# 5.1. V$SESSION

V$SESSION 是性能诊断证据链中的观察点。Oracle 调优要先看数据库时间花在哪里,再关联 SQL_ID、等待事件、对象、会话、系统资源和变更记录;该模块用于把“感觉慢”变成可验证结论。

# 5.2. V$SQL

V$SQL 是 SQL 表达能力的一部分。它不是单纯语法糖,而会改变优化器改写空间、中间结果规模、访问路径、排序哈希和临时空间消耗;复杂 SQL 必须用真实执行计划和行数验证。

# 5.3. V$ACTIVE_SESSION_HISTORY

V$ACTIVE_SESSION_HISTORY 是性能诊断证据链中的观察点。Oracle 调优要先看数据库时间花在哪里,再关联 SQL_ID、等待事件、对象、会话、系统资源和变更记录;该模块用于把“感觉慢”变成可验证结论。

# 5.4. Alert Log

Alert Log 是性能诊断证据链中的观察点。Oracle 调优要先看数据库时间花在哪里,再关联 SQL_ID、等待事件、对象、会话、系统资源和变更记录;该模块用于把“感觉慢”变成可验证结论。

# 5.5. ADRCI

ADRCI 是性能诊断证据链中的观察点。Oracle 调优要先看数据库时间花在哪里,再关联 SQL_ID、等待事件、对象、会话、系统资源和变更记录;该模块用于把“感觉慢”变成可验证结论。

# 5.6. Blocking Session

Blocking Session 处在逻辑对象和物理文件之间。Oracle 最终以数据块读写,向上组织为区、段、表空间,向下落到数据文件或 ASM 磁盘组;空间不足、热点块、坏块和 IO 延迟都要从这个层级关系里定位。

# 5.7. IO Wait

IO Wait 是性能诊断证据链中的观察点。Oracle 调优要先看数据库时间花在哪里,再关联 SQL_ID、等待事件、对象、会话、系统资源和变更记录;该模块用于把“感觉慢”变成可验证结论。

# 5.8. CPU Wait

CPU Wait 是性能诊断证据链中的观察点。Oracle 调优要先看数据库时间花在哪里,再关联 SQL_ID、等待事件、对象、会话、系统资源和变更记录;该模块用于把“感觉慢”变成可验证结论。

# 5.9. Network Wait

Network Wait 是性能诊断证据链中的观察点。Oracle 调优要先看数据库时间花在哪里,再关联 SQL_ID、等待事件、对象、会话、系统资源和变更记录;该模块用于把“感觉慢”变成可验证结论。

# 6. 开发人员重点提醒

  • 反馈故障时提供准确时间、接口、SQL 或业务参数。
  • 应用日志要记录数据库错误码和 SQL 标识。
  • 避免客户端长时间不取结果导致网络等待。

# 7. 运维人员重点提醒

  • 故障现场先采集会话、ASH、AWR、alert log 和系统指标。
  • 区分空闲等待和有效等待。
  • 建立常用等待事件到排查动作的手册。

# 8. 典型问题与排查

  • enq 等待:查阻塞链和事务边界。
  • db file sequential/scattered read:查索引访问、全表扫描和存储延迟。
  • SQL*Net message from client:区分空闲等待和客户端处理慢。

# 9. 实践建议与检查清单

  • 故障采集脚本可用
  • alert log 路径清楚
  • 等待事件能分类
  • ASH 能按时间窗口查询
  • 排障结论有证据链

# 10. 阶段小结

本篇的学习重点不是记住术语,而是能把底层机制、业务语义和生产证据连起来。读完本篇后,应该能解释关键组件如何协作、常见问题为什么发生、开发侧如何避免制造风险、运维侧如何用指标和日志把问题定位到具体链路。

上次更新: 2026/06/25, 15:30:11
AWR ASH与性能诊断
RMAN备份恢复与闪回技术

← AWR ASH与性能诊断 RMAN备份恢复与闪回技术→

Copyright © 2023-2026 Wray | 鄂ICP备2024050235号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式