自动诊断存储库Automatic Diagnostic Repository (ADR)

自动诊断存储库 (ADR)是一个基于文件的存储库,用于存储数据库诊断数据,例如跟踪文件、警报日志、DDL 日志和运行状况监视器报告。

ADR 的主要特征包括:

  • 统一目录结构

  • 一致的诊断数据格式

  • 统一工具集

上述特征使客户和 Oracle Support 能够跨多个 Oracle 实例、组件和产品关联和分析诊断数据。

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

问题和事件

ADR主动跟踪数据库中的关键错误问题。

严重错误表现为内部错误,例如ORA-600,或其他严重错误。每个问题都有一个问题键,它是描述问题的文本字符串。

当一个问题多次出现时,ADR 会为每次出现创建一个带时间戳的事件事件由数字事件 ID唯一标识。发生事件时,ADR 会向Enterprise Manager发送事件警报。严重错误的诊断和解决通常从事件警报开始。

由于一个问题可能会在短时间内产生许多事件,因此 ADR 在达到某些阈值后对事件生成应用洪水控制。洪水控制的事件生成警报日志条目,但不会生成事件转储。通过这种方式,ADR 会通知您正在发生严重错误,而不会因诊断数据而使系统过载。

 

ADR 结构

ADR 库可以包含多个 ADR 主目录,其中每个ADR 主目录都是 Oracle 产品或组件实例的所有诊断数据(跟踪、转储、警报日志等)的根目录。例如,在具有共享存储和 Oracle ASM 的 Oracle RAC 环境中,每个数据库实例和每个 Oracle ASM 实例都有自己的 ADR 主目录。

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

 

 如以下 Linux 示例所示,当您在创建数据库之前使用唯一 SID 和数据库名称启动实例时,Oracle 数据库默认创建 ADR 作为主机文件系统中的目录结构。SID 和数据库名称构成 ADR 主页中文件路径名称的一部分。

 创建 ADR

% setenv ORACLE_SID osi
% echo "DB_NAME=dbn" > init.ora
% sqlplus / as sysdba
.
.
. 
Connected to an idle instance.
 
SQL> STARTUP NOMOUNT PFILE="./init.ora"
ORACLE instance started.
 
Total System Global Area  146472960 bytes
Fixed Size                  1317424 bytes
Variable Size              92276176 bytes
Database Buffers           50331648 bytes
Redo Buffers                2547712 bytes
 
SQL> COL NAME FORMAT a21
SQL> COL VALUE FORMAT a60
SQL> SELECT NAME, VALUE FROM V$DIAG_INFO;
 
NAME                  VALUE
--------------------- --------------------------------------------------------
Diag Enabled          TRUE
ADR Base              /d1/3910926111/oracle/log
ADR Home              /d1/3910926111/oracle/log/diag/rdbms/dbn/osi
Diag Trace            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/trace
Diag Alert            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/alert
Diag Incident         /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/incident
Diag Cdump            /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/cdump
Health Monitor        /d1/3910926111/oracle/log/diag/rdbms/dbn/osi/hm
Default Trace File    /d1/3910926111/oracle/log ... osi/trace/osi_ora_6825.trc
Active Problem Count  0
Active Incident Count 0

警报日志

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

警报日志内容包括:

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

  • 管理操作,例如 SQL*Plus 命令STARTUP、、、SHUTDOWNARCHIVE LOGRECOVER

  • 与共享服务器和调度程序进程的功能有关的若干消息和错误

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

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

当您第一次启动数据库实例时,Oracle 数据库会在图 13-8alert所示的子目录中创建警报日志,即使尚未创建数据库也是如此。此文件为 XML 格式。trace 子目录包含一个纯文本警报日志,其中一部分出现在以下示例中:

Fri Nov 02 12:41:58 2014
SMP system found. enable_NUMA_support disabled (FALSE)
Starting ORACLE instance (normal)
CLI notifier numLatches:3 maxDescs:189
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Initial number of CPU is 2
Number of processor cores in the system is 2
Number of processor sockets in the system is 2
Shared memory segment for instance monitoring created
Picked latch-free SCN scheme 3
Using LOG_ARCHIVE_DEST_1 parameter default value as /disk1/oracle/dbs/arch
Autotune of undo retention is turned on.
IMODE=BR
ILAT =10
LICENSE_MAX_USERS = 0
SYS auditing is disabled
NOTE: remote asm mode is local (mode 0x1; from cluster type)
Starting up:
Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
With the Partitioning, Advanced Analytics and Real Application Testing options.
.
.
.
Using parameter settings in client-side pfile 
System parameters with nondefault values:
  processes                = 100
  sessions                 = 172

查询V$DIAG_INFO告警日志。

DDL 日志

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

DDL日志记录是DDL文本,可以选择添加补充信息。每个DDL语句都有一条日志记录。DDL日志存储在ADR主目录的log/DDL子目录中。

跟踪文件

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

 

 

 

 

 

 

posted @ 2022-10-06 17:24  wongchaofan  阅读(352)  评论(0编辑  收藏  举报