oracle 排查卡顿相关日志

都是 Oracle 数据库在 Automatic Diagnostic Repository (ADR) 机制下生成的 跟踪日志(Trace Files),但它们的来源、用途和内容各有不同。下面逐一详解:


✅ 1. xxxx_ora_68372.trc

🔹 类型:用户会话跟踪文件(User Session Trace)

🔍 命名解析:

  • xxxx:数据库实例名(SID)
  • ora:表示这是一个 Oracle 用户会话进程(非后台进程)
  • 68372:操作系统进程 ID(PID)

📌 来源:

  • 由 客户端连接数据库时启动的服务器进程(Server Process) 生成。
  • 本质上是一个通过 OCI 连接数据库的"用户会话",因此其 trace 文件以 _ora_ 命名。

📝 内容特点:

  • 记录该会话的 基本上下文信息(SESSION ID、MODULE NAME、ACTION 等)
  • 包含 操作的时间戳、命令类型(如 backup)、开始/结束时间
  • 不包含详细 SQL 执行计划或 SBT 调用细节(除非手动开启 SQL_TRACE)

✅ 2. xxxx_dia0_10319_lws_1.trc

🔹 类型:诊断守护进程(Diagnostic Daemon)生成的"本地等待链"日志

🔍 命名解析:

  • dia0:Diagnostic Daemon(诊断守护进程),负责自动检测异常(如 hung session)
  • 10319:dia0 进程的 PID
  • lws_1:Local Wait Chain Snapshot #1(本地等待链快照)

📌 来源:

  • 当 Oracle 的 Health Monitor (HM) 检测到某个会话长时间无响应(如等待超过阈值),会触发 dia0 进程生成 等待链分析(Wait Chain Analysis)。
  • _lws_ 文件专门用于记录 会话之间的阻塞关系(谁在等谁)。

📝 内容特点:

  • 包含完整的 等待事件栈(Wait Event Stack)
  • 显示当前会话正在等待的资源(如 'recovery area: computing obsolete files')
  • 列出 前序等待事件 (如 'direct path write temp')
  • 可能包含 执行的 SQL 片段 (如 dbms_rcvman.lbCursor_t 调用)

✅ 3. xxxx_dia0_10319_base_2.trc

🔹 类型:诊断守护进程(dia0)的基础跟踪文件(Base Trace)

🔍 命名解析:

  • base_2:表示这是 dia0 进程的 第 2 个基础 trace 文件(可能因日志轮转产生多个)
  • 与 _lws_ 不同,_base_ 文件记录 dia0 自身的运行状态和检测事件

📌 来源:

  • dia0 进程在执行 Health Monitor 任务时,会将通用日志写入 base_*.trc
  • 包括:hung session 检测、I/O 异常告警、自动诊断动作等

📝 内容特点:

  • 记录 hung session 的发现与解除时间 log

    复制代码
    HM: Session ... is hung
    HM: Session ... is no longer hung
  • 报告 系统级异常 ,如:log

    复制代码
    HM: IO load is abnormally high - 33% outliers
  • 触发 本地等待链分析 (即生成 _lws_*.trc 的原因)


📊 三者关系总结

表格

文件 生成者 作用 关键信息
xxxx_ora_68372.trc 会话进程 记录 操作生命周期 会话 ID、操作类型、起止时间
xxxx_dia0_10319_lws_1.trc dia0(Health Monitor) 分析卡住会话的等待链 等待事件、SQL 上下文、I/O 行为
xxxx_dia0_10319_base_2.trc dia0(Health Monitor) 记录诊断事件和系统告警 hung session 状态变化、I/O 异常

💡 附加说明:如何查看这些文件?

所有文件均位于 ADR 的 trace 目录下:

复制代码
 $ ORACLE_BASE/diag/rdbms/siphisdb/siphisdb/trace/

可通过以下 SQL 查询路径:

复制代码
SELECT VALUE FROM V $ DIAG_INFO WHERE NAME = 'Diag Trace';

✅ 总结

表格

文件 是什么日志? 能回答什么问题?
xxxx_ora_68372.trc 会话日志 "哪个会话执行了什么操作?何时开始/结束?"
xxxx_dia0_10319_lws_1.trc 等待链分析日志 "会话卡在哪里?在等什么资源?执行了什么代码?"
xxxx_dia0_10319_base_2.trc 健康监控日志 "系统是否检测到异常?I/O 是否过载?卡顿是否持续?"

这三份日志共同构成了完整的故障诊断证据链,是排查卡顿问题的关键依据。

相关推荐
ShineWinsu11 小时前
对于Redis:Redis的认识以及分布式系统的解析
linux·数据库·c++·redis·缓存·消息队列·分布式架构
SelectDB12 小时前
ELK 做不了的分析,我用 Doris 物化视图补上了:配置、开关与四个排错现场
大数据·数据库·数据分析
SelectDB12 小时前
Agent 日志检索慢、存储还贵?search() + VARIANT 的落地命令和几个当场踩出来的问题
大数据·数据库·数据分析
SelectDB12 小时前
ClickHouse 存日志踩过的并发坑:压测脚本、检索写法与排错命令
大数据·数据库·数据分析
龙腾AI白云12 小时前
AI微调技术:让通用大模型精准适配垂直行业
数据库·人工智能·机器学习·flask·scikit-learn
SelectDB12 小时前
NESTED 怎么搜 VARIANT 里的嵌套数组:一份可直接复制的统一引擎实战笔记
大数据·数据库·数据分析
hasty12 小时前
返回一个文件,为何越过整个目录?Khoj 静态资源路由的安全边界
数据库·安全
程序员-Benothing12 小时前
Linux内核与模块管理:uname、lsmod、modprobe、sysct
linux·运维·数据库
cmes_love13 小时前
期货期权L2五档行情、逐笔成交、分钟日线数据字段速览
数据库
神仙别闹13 小时前
基于C语言实现 TINY+ 编译器
c语言·开发语言·数据库