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

oracle的诊断文件的学习

诊断文件概览

甲骨文数据库包括一个故障可诊断性基础设施,用于预防、检测、诊断和解决数据库问题。问题包括代码错误、元数据损坏和客户数据损坏等关键错误。

先进的故障诊断性基础设施的目标如下:

  • 主动检测问题

  • 在检测到问题后限制损坏和中断

  • 缩短问题诊断和解决时间

  • 通过启用跟踪文件进行分区来提高可管理性,允许用户定义每块大小和要保留的最大块数,并在达到用户指定的磁盘空间限制后禁用跟踪

  • 简化客户与甲骨文支持的互动

诊断文件包括:自动诊断存储库,警报日志,ddl日志,追踪文件,垃圾文件。

自动诊断存储库(ADR)是一个基于文件的存储库,用于存储数据库诊断数据,如跟踪文件、警报日志、DDL日志和健康监控报告。

子目录名称存储内容描述
alert存储警报日志(Alert Log),记录数据库启动 / 关闭、错误、参数变更等关键事件
cdump核心转储文件(Core Dump),包含实例崩溃时的内存状态,用于故障分析
hm健康监控(Health Monitor)报告,记录数据库健康检查结果和建议
incident事件(Incident)相关数据,每个事件对应一个唯一编号,包含跟踪文件、堆栈信息等
lck锁相关诊断文件,记录实例间资源锁定冲突信息(RAC 环境)
log工具日志(如 RMAN、SQL*Loader),记录工具执行过程中的详细日志
metadataADR 自身的元数据,用于管理诊断数据的索引和关联关系
trace跟踪文件(Trace File),包含 SQL 执行跟踪、后台进程日志、参数调试信息等

oracle数据库实例ADR的目录结构

也可以通过输入命令查看其结构

警报日志

每个数据库都有一个警报日志,这是一个包含数据库消息和错误的时间顺序日志的XML文件。

警报日志内容包括以下内容:

  • 所有内部错误(ORA-600)、块损坏错误(ORA-1578)和死锁错误(ORA-60

  • 管理操作,如SQL*Plus命令STARTUPSHUTDOWNARCHIVE LOGRECOVER

  • 与共享服务器和调度程序功能相关的几个消息和错误

  • 自动刷新实体化视图期间的错误

# 以Oracle用户身份执行

adrci

# 查看当前ADR Home

show home

# 设置ADR Home(若未自动定位)

set home /u01/app/oracle/diag/rdbms/zjr/zjr

# 查看警报日志(支持时间过滤、错误类型筛选)

show alert

# 查看最近50条错误记录

show alert -tail 50 -level ERROR

# 按时间范围查询(如2025-07-05)

show alert -between "2025-07-05 00:00:00" "2025-07-05 23:59:59"

# 定位特定错误(如ORA-1578)

show alert -message "ORA-1578"

DDL日志

DDL日志的格式和基本行为与警报日志相同,但仅包含DDL语句和详细信息。数据库将DDL信息写入自己的文件中,以减少警报日志中的杂乱。

DDL日志记录是DDL文本,可选用补充信息进行增强。每个DDL语句都存在一个日志记录。DDL日志存储在ADR主目录的log/ddl子目录中。

追踪文件

跟踪文件是包含用于调查问题的诊断数据的文件。此外,跟踪文件可以为调整应用程序或实例提供指导。

 

类型生成者典型内容关键用途
后台进程跟踪文件DBWR、LGWR、ARCH 等后台进程进程状态变更、I/O 操作细节、错误堆栈(如 DBWR 的块写入失败)诊断实例挂起、归档失败等基础设施问题
服务器进程跟踪文件用户会话对应的服务器进程SQL 执行计划、绑定变量值、等待事件(如闩锁等待)、事务回滚细节优化慢 SQL、分析会话阻塞
SQL 跟踪文件基于 SQL_TRACE 参数或 DBMS_MONITOR包含完整的 SQL 执行轨迹,记录每个操作的 CPU 时间、磁盘读写、递归 SQLSQL 性能调优、执行计划验证
内部错误跟踪文件数据库遇到 ORA-600 等错误时错误参数、内存结构转储、调用栈信息(如 [kdsfdpDelete] 错误的内存地址)分析核心错误的根本原因
RMAN 跟踪文件RMAN 备份恢复工具备份集创建过程、增量备份差异计算、恢复操作步骤(如数据文件还原路径)排查备份失败、恢复时间过长问题
网络跟踪文件Net8 网络进程(如 TNListener)连接请求处理、数据包传输细节、TCP/IP 错误(如连接超时、校验和错误)
诊断垃圾

诊断转储文件是一种特殊类型的跟踪文件,其中包含有关状态或结构的详细时间点信息。

跟踪往往是诊断数据的连续输出。相比之下,转储通常是响应事件的一次性诊断数据输出。

事件(Incident)与跟踪转储的核心关系

在 Oracle 诊断体系中,事件(Incident) 是故障的基本单元,而跟踪转储(Trace Dump) 是事件的核心诊断数据载体,两者关系遵循以下逻辑:

 
  1. 事件触发转储生成:当数据库检测到错误(如 ORA-600)或异常时,自动创建事件,并生成对应的跟踪转储文件;
  2. 转储文件的事件绑定:每个转储文件均包含事件编号(Incident ID),确保诊断数据与事件的唯一关联;
  3. 多级转储机制:复杂事件可能生成多个转储(如堆转储、系统状态转储),通过dump_id区分同一事件下的不同转储内容。
转储类型生成场景关键诊断价值
事件基础转储事件创建时自动生成,记录错误基本信息错误代码、参数、时间戳、进程环境
堆转储进程内存堆(Heap)异常时生成,如内存 corruption分析内存结构损坏、指针错误
系统状态转储数据库挂起或死锁时生成,记录全局资源状态闩锁持有情况、等待链、资源竞争关系
SQL 跟踪转储关联到特定 SQL 的执行跟踪,包含执行计划和统计信息SQL 性能瓶颈定位、执行计划异常分析
PGA 转储进程全局区(PGA)内存转储,用于分析排序、哈希等操作的内存使用诊断 PGA 内存泄漏、排序溢出问题

具体流程

http://www.dtcms.com/a/267353.html

相关文章:

  • SpringCloud系列(50)--SpringCloud Stream消息驱动之实现消费者
  • 零基础 “入坑” Java--- 七、数组(二)
  • grom 事务 RowsAffected 踩坑记录
  • 数据结构——栈的讲解(超详细)
  • 深入解析C语言位域
  • 计算故障诊断振动信号的时频域特征,得到特征向量
  • Redis服务器
  • 个人独创-CV领域快速测试缝合模型实战框架讲解-基础篇-Pytorch必学知识
  • 从新闻到知识图谱:用大模型和知识工程“八步成诗”打造科技并购大脑
  • MySQL 数据库传统方式部署主从架构的实现很详细
  • C语言socket编程-补充
  • MOS管(MOSFET)和三极管(BJT)和IGBT的区别
  • 【赵渝强老师】Oracle RMAN的目录数据库
  • Cookie(搭配domain)/Session(搭配HttpServletRequest+HttpSession)
  • python优先队列使用
  • 基于spark的奥运会奖牌变化数据分析
  • mysql的备份与恢复(使用mysqldump)
  • MyChrome.exe与Selenium联动避坑指南:User Data目录冲突解决方案
  • 爬虫-web请求全过程
  • 数据结构:数组:二分查找(Binary Search)
  • C#使用开源框架NetronLight绘制流程图
  • Hinge×亚矩云手机:以“深度连接”为名,重构云端社交的“真实感”
  • AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
  • Jedis 原生之道:Redis 命令 Java 实现指南(二)
  • SpringAI与智能体入门
  • 探索 Ubuntu 上 MongoDB 的安装过程
  • NX二次开发常用函数——获取边对应的面 UF_MODL_ask_edge_faces
  • 使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
  • 电脑休眠设置
  • 【网络与爬虫 13】智能伪装:Scrapy-Fake-UserAgent反检测技术实战指南