天天看点

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

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