诊断文件概述

Oracle数据库包括用于预防,检测,诊断和解决数据库问题的故障诊断基础结构。问题包括严重错误,例如代码错误,元数据损坏和客户数据损坏。
高级故障诊断基础架构的目标如下:

  • 主动发现问题
  • 检测到问题后限制损坏和中断
  • 减少问题诊断和解决时间
  • 通过启用跟踪文件进行分区来提高可管理性,允许用户定义每个部件的大小和要保留的最大件数,并在达到用户指定的磁盘空间限制后禁用跟踪
  • 简化客户与Oracle支持的互动

    自动诊断存储库

    自动诊断存储库(ADR)是一个基于文件的存储库,用于存储数据库诊断数据,如跟踪文件,警报日志,DDL日志和Health Monitor报告。
    ADR的主要特征包括:

  • 统一目录结构

  • 一致的诊断数据格式
  • 统一工具集

ADR位于数据库之外,这使Oracle数据库能够在物理数据库不可用时访问和管理ADR。数据库实例可以在创建数据库之前创建ADR。

问题和事故

ADR主动跟踪问题,这些问题是数据库中的关键错误。
严重错误表现为内部错误,例如ORA-600,或其他严重错误。每个问题都有一个问题键,它是描述问题的文本字符串。
当多次出现问题时,ADR会为每次出现创建带时间戳的事件。事件由数字事件ID唯一标识。发生事件时,ADR会向企业管理器发送事件警报。诊断和解决严重错误通常始于事件警报。
由于问题可能在短时间内产生许多事件,因此ADR会在达到某些阈值后对事件生成应用洪水控制。一个洪水控制的事件生成警报日志条目,但不生成事件的转储。通过这种方式,ADR会通知您正在发生严重错误,而不会使系统过载诊断数据。

ADR结构

ADR基是ADR根目录。
ADR基础可以包含多个ADR 目录,其中每个ADR主目录是所有诊断数据跟踪,转储,警报日志等的根目录,用于Oracle产品或组件的实例。例如,在具有共享存储和Oracle ASM的Oracle RAC环境中,每个数据库实例和每个Oracle ASM实例都有自己的ADR主目录。
下图说明了数据库实例的ADR目录层次结构。其他Oracle产品或组件(如Oracle ASM或Oracle Net Services)的其他ADR主目录可以存在于此层次结构中,位于相同的ADR基础之下。
ADR报警日志和跟踪文件路径 - 图1

警报日志

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

  • 所有内部错误(ORA-600),阻止损坏错误(ORA-1578)和死锁错误(ORA-60
  • 管理操作,如SQL * Plus命令STARTUPSHUTDOWNARCHIVE LOG,和RECOVER
  • 与共享服务器和调度程序进程的功能相关的若干消息和错误
  • 自动刷新物化视图期间的错误

Oracle数据库使用警报日志替代在企业管理器GUI中显示信息。如果管理操作成功,则Oracle数据库会将消息作为“已完成”和时间戳写入警报日志。

DDL日志

DDL日志具有相同的格式和基本行为警报日志,但只包含DDL语句和细节。数据库将DDL信息写入其自己的文件,以减少警报日志中的混乱。
DDL日志记录是DDL文本,可选择使用补充信息进行扩充。每个DDL语句都存在一条日志记录。DDL日志存储在log/ddlADR主目录的子目录中。

跟踪文件的类型

每个服务器和后台进程都可以定期写入关联的跟踪文件。这些文件包含有关进程环境,状态,活动和错误的信息。
SQL跟踪工具还会创建跟踪文件,这些文件提供有关各个SQL语句的性能信息。您可以通过各种方式为客户端标识符,服务,模块,操作,会话,实例或数据库启用跟踪。例如,您可以在DBMS_MONITOR包中执行适当的过程或设置事件。

跟踪文件的位置

ADR将跟踪文件存储在trace子目录中。跟踪文件名与平台有关,并使用扩展名.trc
通常,数据库后台进程跟踪文件名包含Oracle SID,后台进程名称和操作系统进程号。该RECO过程的跟踪文件的示例是mytest_reco_10355.trc
服务器进程跟踪文件名包含Oracle SID,字符串ora和操作系统进程号。服务器进程跟踪文件名的示例是mytest_ora_10304.trc
有时跟踪文件具有相应的跟踪元数据文件,以扩展名结尾.trm。这些文件包含称为跟踪映射的结构信息,数据库用于搜索和导航。

跟踪文件的分段

当跟踪文件大小有限时,数据库可能会自动将其拆分为最多五个段。段是与活动跟踪文件同名的单独文件,但附加了段号,如下所示ora_1234_2.trc
每个细分通常是设定限制的20%MAX_DUMP_FILE_SIZE。当所有段的组合大小超过限制时,数据库将删除最旧的段(尽管从不是第一段,其中可能包含有关该过程初始状态的相关信息),然后创建一个新的空段。

诊断转储

诊断转储文件是一种特殊类型,它包含约详细的状态或结构点在时间信息跟踪文件的。
跟踪倾向于连续输出诊断数据。相反,转储通常是响应于事件的诊断数据的一次性输出。

跟踪转储和事件

大多数转储都是由于事故而发生的。
发生事件时,数据库会将一个或多个转储写入为事件创建的事件目录。事件转储还包含文件名中的事件编号。
在事件创建期间,应用程序可能会将堆或系统状态转储作为操作的一部分。在这种情况下,数据库会将转储名称附加到事件文件名而不是默认的跟踪文件名。例如,由于进程中发生事件,数据库会创建文件prod_ora_90348.trc。事件中的转储生成文件,其中是事件的数字ID。作为事件的一部分创建的堆转储操作会生成堆转储文件,其中是跟踪转储的数字ID。prod_ora_90348__incident_id_.trc``_incident_id_``prod_ora_90348__incident_id___dump_id_.trc``_dump_id_

跟踪文件

一个跟踪文件是包含用于研究问题的诊断数据的文件。此外,跟踪文件可以为调整应用程序或实例提供指导。
1.查看diagnostic_dest 属性值

  1. SQL> show parameter dia
  2. NAME TYPE VALUE
  3. ------------------------------------ ----------- -----------------------------
  4. -
  5. diagnostic_dest string /opt/oracle

2.查看 v$diag_info视图查看相关路径

  1. select * from v$diag_info;