Oracle 自己主动诊断资料档案库 (ADR)、自己主动诊断工作流、ADRCI工具

时间:2021-12-30 23:11:02

1.自己主动诊断工作流:

通过一个始终处于打开状态的内存中跟踪工具,数据库组件能够在第一次出现严重错误故障时捕获诊断数据。系统将自己主动维护一个称为“自己主动诊断资料档案库”的特殊资料档案库,以保存有关严重错误事件的诊断信息。此信息可用于创建要发送到 Oracle 支持服务以进行调查的意外事件程序包。

以下是一个典型的诊断会话工作流:
1)意外事件导致 Oracle Enterprise Manager (EM) 中出现预警。

2)DBA 可通过 EM 的“Alert(预警)”页查看此预警。

3)DBA 能够细化到意外事件和问题的具体信息。

4)DBA 能够决定或 Oracle 支持服务能够要求将信息打包并通过 MetaLink 发送到 Oracle 支持服务。DBA 能够将文件加入到自己主动打包的数据中。

Oracle 自己主动诊断资料档案库 (ADR)、自己主动诊断工作流、ADRCI工具

 

2.自己主动诊断资料档案库 (ADR)

Oracle 自己主动诊断资料档案库 (ADR)、自己主动诊断工作流、ADRCI工具

ADR 是一个基于文件的资料档案库。用于存放数据库诊断数据(如跟踪、意外事件转储和程序包、预警日志、健康监视报表、核心转储等)。它对存储在不论什么数据库外的多个实例和多种产品使用一个统一的文件夹结构。

因此。在数据库关闭时可用来诊断问题。

从 Oracle Database 11g R1 開始。数据库、自己主动存储管理 (ASM)、集群就绪服务 (CRS) 和其他 Oracle 产品或组件将全部诊断数据都存储在 ADR 中。每种产品的每一个实例都将诊断数据存储在自己的 ADR 主文件夹下。比如,在具有共享存储和 ASM 的 Real Application Clusters 环境中,每一个数据库实例和每一个 ASM 实例在 ADR 中都有一个主文件夹。

利用 ADR 的统一文件夹结构、用于各种产品和实例的统一诊断数据格式以及一组统一的工具。客户和 Oracle 技术支持能够相互关联并分析多个实例的诊断数据。


ADR 根文件夹又称为 ADR 基文件夹。其位置由 DIAGNOSTIC_DEST 初始化參数设置。假设此參数被忽略或留为空值,则数据库在启动时将对 DIAGNOSTIC_DEST 进行例如以下设置:假设设置了环境变量 ORACLE_BASE。则将 DIAGNOSTIC_DEST 设置为 $ORACLE_BASE。假设未环境变量设置 ORACLE_BASE,则将 DIAGNOSTIC_DEST 设置为 $ORACLE_HOME/log。

 

3.ADR 命令行工具 ADRCI

ADRCI 是一种命令行工具,属于数据库故障诊断基础结构的一部分。

ADRCI 能够通过操作系统提示符与 ADR 进行交互。

使用 ADRCI 能够查看自己主动诊断资料档案库中的诊断数据。

使用 ADRCI 能够:
--查看自己主动诊断资料档案库 (ADR) 中的诊断数据
--将意外事件和问题信息打包成 zip 文件传输到 Oracle 技术支持

ADRCI 具有丰富的命令集,可在交互模式下使用,也能够在脚本中使用。此外,ADRCI 还能够运行 ADRCI 命令脚本,使用的方式与 SQL*Plus 运行 SQL 脚本和 PL/SQL 命令的方式同样。

$ adrci

ADRCI: Release 11.1.0.5.0 - On Sat Jul 7 08:01:40 2007

Copyright (c) 1982, 2007, Oracle. All rights reserved.
 


ADR base = "/u01/app/oracle"
 


ADRCI> show incident


ADR Home = /u01/app/oracle/product/11.1.0/db_1/log/diag/rdbms/orcl/orcl:

**************************************************************************
INCIDENT_ID PROBLEM_KEY                          CREATE_TIME

----------- ------------------------------------ ------------------------

1681        ORA-600_dbgris01:1,_addr=0xa9876541  17-JAN-07 09.17.44.843125… 

1682        ORA-600_dbgris01:12,_addr=0xa9876542 18-JAN-07 09.18.59.434775…

2 incident info records fetched


4.V$DIAG_INFO 视图

SQL> SELECT * FROM V$DIAG_INFO;

NAME                  VALUE
-------------------   -------------------------------------------------
Diag Enabled          TRUE

ADR Base              /u01/app/oracle

ADR Home              /u01/app/oracle/diag/rdbms/orcl/orcl

Diag Trace            /u01/app/oracle/diag/rdbms/orcl/orcl/trace

Diag Alert            /u01/app/oracle/diag/rdbms/orcl/orcl/alert

Diag Incident         /u01/app/oracle/diag/rdbms/orcl/orcl/incident

Diag Cdump            /u01/app/oracle/diag/rdbms/orcl/orcl/cdump

Health Monitor        /u01/app/oracle/diag/rdbms/orcl/orcl/hm

Default Trace File    /u01/app/oracle/diag/.../trace/orcl_ora_11424.trc

Active Problem Count  3

Active Incident Count 8

 

V$DIAG_INFO 视图列出了全部重要 ADR 的位置:

ADR Base:ADR 基文件夹的路径。

ADR Home:当前数据库实例的 ADR 主文件夹的路径。

Diag Trace:文本预警日志和后台/前台进程跟踪文件的位置。

Diag Alert:XML 版本号的预警日志的位置。
Diag Incident:意外事件日志的写入位置。

Diag Cdump:在此文件夹中写入诊断核心文件。

Health Monitor:执行健康监视时产生的日志的位置。

Default Trace File:会话的跟踪文件的路径。

SQL 跟踪文件写入此位置。

 

5.Oracle 10g 与 Oracle 11g 的诊断跟踪的位置

诊断数据          曾经的位置                                                ADR 位置
前台进程跟踪  USER_DUMP_DEST                                ADR_HOME/trace
后台进程跟踪  BACKGROUND_DUMP_DEST                ADR_HOME/trace
预警日志数据  BACKGROUND_DUMP_DEST                ADR_HOME/alert   ADR_HOME/trace
核心转储         CORE_DUMP_DEST                                ADR_HOME/cdump
意外事件转储  USER|BACKGROUND_DUMP_DEST      ADR_HOME/incident/incdir_n