`

ORACLE 11G中的ADR介绍:

 
阅读更多
直到今天,我才开始接触oracle 11g,先了解其新特性,以下这些是我的新特性读书笔记:
 
第一部分:(Automatic Diagnostic Repository)ADR
 
在oracle 11g中,你不能在目录$ORACLE_BASE/diag/rdbms/$INSTANCE_NAME/$ORACLE_SID/alert中直接读取alert日志。而是读取其中的log.xml文件。该文件不是文本文件。除了所有标准的数据库操作信息外,alert日志里也包含关于事件的信息。你也可以从目录 $ORACLE_BASE/diag/rdbms/$INSTANCE_NAME/$ORACLE_SID/trace中读取以前版本的alert日志。

problems和incidents (问题和事件)

围绕着oracle 11g错误诊断结构有两种新的概念:problems和incidents。
problems:
任何严重错误称之为problems,比如ORA-600错误,ORA-04031错误。所有涉及数据库problems的源数据都存储在ADR中。每一个问题分配一个关键字,以便于标识和描述问题。问题关键字包括oracle错误号和错误变量值。
incidents:
是一次问题的产生。一个问题可能会产生多次。每一次就是一个事件。每个事件有它自己的事件ID.
比如:
INCIDENT_ID PROBLEM_KEY CREATE_TIME
------------ ------------------ ---------------------------
8801 ORA 600 [4899] 27-MAR-07 06.14.41.04-05:00

当某一个事件产生时。在数据库里做三件事情:

  • 为该事件创建一个告警日志行并分配合适安全告警。
  • 在alert日志里创建相关条目。
  • 收集和存储诊断数据放置在ADR结构中合适子目录中。

不能够禁止自动创建严重错误事件。

事件在ADR中有保留策略:

事件元数据保留在ADR中默认一年。
事件文件和dump保留在ADR中默认是一个月。
可以使用事件package configuration更改这些保留策略。后台进程MMON自动清洗过期的ADR数据。

incident packaging service:

在oracle 11g中,你可以使用IPS来搜寻关于某一个事件或错误的相关trace file,dump file和告警日志并将其打包成压缩文件。
这个特性称之为(incident packaging service)IPS。

ADR的结构和位置:
初始化参数diagnostic_dest指定了ADR的根目录。即使你忽略了该初始化参数。oracle也会创建ADR。
如果你设置了ORACLE_BASE环境变量,那么diagnostic_dest缺省值是该目录。如果你没有设置ORACLE_BASE变量,该参数值为$ORACLE_HOME/log目录。
ADR存储所有oracle产品的诊断数据。ADR为每一个oracle产品及其实例分配一个单独的home目录。因此一个ADR目录包含多个home目录。
每一个ADR的home目录是一个为每一个数据库实例或其它oracle产品或组件存储其诊断文件。其目录结构如下:
ADR_base/diag/product_type/product_id/instance_id/
比如一个 diagnostic_dest初始化参数为 /u05/app/oracle。那么一个oracle数据库的sid为prod1的home目录就如下所示:
/u05/app/oracle/diag/rdbms/prod1/prod1/
在一个ADR的home目录下有很多子目录:
  • alert:一个实例的告警日志文件(xml格式)。
  • cdump:core文件。
  • hm:健康检查报告。
  • incident:每一个事件一个子目录,其中包含所有trace dump文件。
  • incpkg:你创建的事件包,用于发给oracle支持所用。
  • ir:包含实例事件报告。
  • trace:存储回话trace文件。
    可以通过视图v$diag_info来查询目录及其位置:
    SQL> select name, value from v$diag_info;
    NAME VALUE
    ------------------- ---------------------------
    Diag Enabled TRUE
    ADR Base /u01/app/oracle
    ADR Home /01/app/oracle/diag/rdbms/prod/prod1
    Diag Trace /u01/app/oracle/diag/rdbms/prod/prod1/trace
    Diag Alert /u01/app/oracle/diag/rdbms/ prod/prod1/alert
    Diag Incident /u01/app/oracle/diag/rdbms/prod/prod1/incident
    Diag Cdump /u01/app/oracle/diag/rdbms/ prod/prod1/cdump
    Health Monitor /u01/app/oracle/diag/rdbms/ prod/prod1/hm
    Default Trace File /u01/app/oracle/diag/rdbms/ prod/prod1/
    trace/eleven_ora_9417.trc
    Active Problem Count 3
    Active Incident Count 8
正如你所见,视图v$diag_info中包括问题和事件数量。
 
 
adrci接口:
oracle为我们提供了一个挖掘ADR里的诊断数据的接口,叫adrci。这个命令行工具提供很多丰富的功能,比如将问题和事件打包为一个zip文件发给oracle技术支持。这些被压缩的诊断数据包括trace及dump文件,alert log条目以及oracle 11g的健康监视报告。可以使用adrci的交互模式或使用操作系统的脚本批处理执行这些命令。
在oracle用户执行adrci
[oracle@node1 ~]$ adrci
ADRCI: Release 11.1.0.6.0 - Beta on Thu Apr 5 09:23:37 2012
Copyright (c) 1982, 2007, Oracle. All rights reserved.
ADR base = "/home/oracle"
adrci>
输入帮助:
adrci> help
HELP [topic]
Available Topics:
CREATE REPORT
ECHO
EXIT
HELP
HOST
IPS
PURGE
RUN
SET BASE
SET BROWSER
SET CONTROL
SET ECHO
SET EDITOR
SET HOMES | HOME | HOMEPATH
SET TERMOUT
SHOW ALERT
SHOW BASE
SHOW CONTROL
SHOW HM_RUN
SHOW HOMES | HOME | HOMEPATH
SHOW INCDIR
SHOW INCIDENT
SHOW PROBLEM
SHOW REPORT
SHOW TRACEFILE
SPOOL
There are other commands intended to be used directly by Oracle, type
"HELP EXTENDED" to see the list
adrci>
查看home目录:
adrci> show home
ADR Homes:
diag/tnslsnr/node1/listener
diag/clients/user_oracle/host_514214572_11
diag/rdbms/rac/rac
adrci>
为了在shell脚本中使用adrci,你可以使用命令行参数exec来调用adrci。比如:
adrci exec="command[; command]..."
例如你想在脚本里使用show homes和show incident,使用如下语法:
adrci exec="show homes; show incident"
[oracle@node1 ~]$
[oracle@node1 ~]$ adrci exec="show homes; show incident"
ADR Homes:
diag/tnslsnr/node1/listener
diag/clients/user_oracle/host_514214572_11
diag/rdbms/rac/rac
ADR Home = /home/oracle/diag/tnslsnr/node1/listener:
*************************************************************************
0 rows fetched
ADR Home = /home/oracle/diag/clients/user_oracle/host_514214572_11:
*************************************************************************
0 rows fetched
ADR Home = /home/oracle/diag/rdbms/rac/rac:
*************************************************************************
0 rows fetched
[oracle@node1 ~]$
每一个命令必须使用分号隔开。
下面这个例子是使用ADR命令行去执行vi alert命令。
adrci exec="set homepath diag/rdbms/rac/rac;set editor vi;show alert"
另外,你还可以使用管道方式来封装一个shell脚本,比如下面这个例子是查看alert日志条目中包含ORA-的相关错误及其错误发生的时间。
adrci << EOF
set homepath diag/rdbms/rac/rac
set editor vi
show alert -p "message_text like '%ORA-%'"
EOF
比如使用如下命令查看所有ORA-错误:
adrci> set homepath diag/rdbms/rac/rac
adrci> set editor vi
adrci> show alert -p "message_text like '%ORA-%'"
ADR Home = /home/oracle/diag/rdbms/rac/rac:
*************************************************************************
Output the results to file: /tmp/alert_10191_1638_rac_1.ado

2012-03-29 20:56:12.266000 +08:00
ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...
2012-03-29 20:56:27.810000 +08:00
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_ora_10453.trc:
ORA-00313: ??????? 1 (???? 1) ???
ORA-00312: ???? 1 ?? 1: '/home/oracle/oradata/rac/redo01.log'
ORA-27037: ????????
Linux Error: 2: No such file or directory
Additional information: 3
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_ora_10453.trc:
ORA-00313: ??????? 2 (???? 1) ???
ORA-00312: ???? 2 ?? 1: '/home/oracle/oradata/rac/redo02.log'
ORA-27037: ????????
Linux Error: 2: No such file or directory
Additional information: 3
2012-03-29 20:56:29.286000 +08:00
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_ora_10453.trc:
ORA-00313: ??????? 3 (???? 1) ???
ORA-00312: ???? 3 ?? 1: '/home/oracle/oradata/rac/redo03.log'
ORA-27037: ????????
Linux Error: 2: No such file or directory
Additional information: 3
2012-03-29 21:04:31.458000 +08:00
ORA-1089 : opidrv aborting process J000 ospid (10641_3081467584)
2012-04-03 21:14:42.300000 +08:00
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_j008_6295.trc:
ORA-12012: error on auto execute of job 11689
ORA-01403: no data found

像vi编辑器一样退出后,可以在文件/tmp/alert_10191_1638_rac_1.ado中找到屏幕输出结果。便于分析,可见这个特性和unix中的grep |ORA- 命令是大不相同,因为后者只能输出错误行,但是错误行发生的时间却不能显示,而 show alert则同时显示错误和发生时间。

但是这里要注意:
如果执行如下命令,会让你选择home目录,比如:
adrci> show alert
Choose the alert log from the following homes to view:
1: diag/tnslsnr/node1/listener
2: diag/clients/user_oracle/host_514214572_11
3: diag/rdbms/rac/rac
Q: to quit
Please select option:

这里执行show alert时并没有指定home目录,而是直接在root目录环境下执行show alert命令,因此你需要指定home目录环境或者选择在哪个home目录环境下执行该命令:
而采用下面这种方式,就不需要选择home目录,因为已经明确指定home目录(注意这里set homepath不能指定绝对路径):
adrci> set homepath diag/rdbms/rac/rac
adrci> show alert -p "message_text like '%ORA-%'"
ADR Home = /home/oracle/diag/rdbms/rac/rac:
*************************************************************************
Output the results to file: /tmp/alert_10511_1638_rac_2.ado
2012-03-29 20:56:12.266000 +08:00
ORA-1109 signalled during: ALTER DATABASE CLOSE NORMAL...
2012-03-29 20:56:27.810000 +08:00
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_ora_10453.trc:
ORA-00313: ??????? 1 (???? 1) ???
ORA-00312: ???? 1 ?? 1: '/home/oracle/oradata/rac/redo01.log'
ORA-27037: ????????
Linux Error: 2: No such file or directory
Additional information: 3
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_ora_10453.trc:
ORA-00313: ??????? 2 (???? 1) ???
ORA-00312: ???? 2 ?? 1: '/home/oracle/oradata/rac/redo02.log'
ORA-27037: ????????
Linux Error: 2: No such file or directory
Additional information: 3
2012-03-29 20:56:29.286000 +08:00
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_ora_10453.trc:
ORA-00313: ??????? 3 (???? 1) ???
ORA-00312: ???? 3 ?? 1: '/home/oracle/oradata/rac/redo03.log'
ORA-27037: ????????
Linux Error: 2: No such file or directory
Additional information: 3
2012-03-29 21:04:31.458000 +08:00
ORA-1089 : opidrv aborting process J000 ospid (10641_3081467584)
2012-04-03 21:14:42.300000 +08:00
Errors in file /home/oracle/diag/rdbms/rac/rac/trace/rac_j008_6295.trc:
ORA-12012: error on auto execute of job 11689
ORA-01403: no data found
~
当然某些命令可以支持当前home目录为多个,比如show tracefile等:
当不指定homepath或指定多个homepath时,那么默认是显示所有当前homepath下的tracefile。如果你单独指定某一个homepath,那么该命令只显示当前homepath的tracefile。
有些命令不支持当前homepath为多个,如前面的show alert,又如下面的命令:
adrci> ips create package;
DIA-48448: This command does not support multiple ADR homes
adrci>
这个时候,你必须设置单个homepath以支持该命令:
drci> set homepath diag/rdbms/rac/rac
adrci> ips create package;
Created package 1 without any contents, correlation level typical
 
你也可以像sqlplus一样将命令显示结果传送到一个文件中,如下所示:
adrci> spool /u01/app/oracle/strip_alert.log
adrci> show alert
adrci> spool off
 
显示事件:
adrci> show incident
ADR Home = C:\ORCL11\APP\ORACLE\DIAG\diag\rdbms\auxdb\auxdb:
**********************************************************************
0 incident info records fetched
ADR Home = C:\ORCL11\APP\ORACLE\DIAG\diag\rdbms\eleven\eleven:
**********************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
------------ -------------- ---------------------------
8801 ORA 600 [4899] 17-MAR-07 06.14.41.04-05:00
16417 ORA 7445 [ACCESS_VIOLATION] 17-MAR-07 06.15.46.7905:00
2 incident info records fetched
ADR Home = C:\ORCL11\APP\ORACLE\DIAG\diag\rdbms\orcl11\orcl11:
**********************************************************************
INCIDENT_ID PROBLEM_KEY CREATE_TIME
-------------------- -------------------- ---------------------------
113769 ORA 1578 [2] [66598] 27-MAR-07 10.00.10.91-05:00
113770 ORA 1578 27-MAR-07 10.00.11.86-05:00
113771 ORA 1578 27-MAR-07 10.00.12.10-05:00
3 incident info records fetched
adrci>
上面的结果显示分析如下:
数据库auxdb没有打开的事件,数据库eleven有两个打开的事件,数据库orcl11有三个打开的事件。
如果你想下钻到具体某一个事件的详细情况,可是使用如下命令:
adrci> show incident -mode detail -p "incident_id=113769"
...
----------------------------------------------------------
INCIDENT FILES:
INCIDENT_ID 113769
OWNER_ID 1
BFILE C:\ORCL11\APP\ORACLE\DIAG\diag\rdbms\orcl11\orcl1
\incident\incdir_113769/orcl11_j003_4244_i113769.trc
Incident file number: 1
----------------------------------------------------------
1 incident info records fetched
adrci>
show incident命令有两个选项,-p 和-mode。你可是使用-p来界定字段,该字段必须使用双引号界定。下面的命令显示了可以使用的字段名:

adrci> set homepath diag/rdbms/rac/rac
adrci> describe incident
Name Type NULL?
----------------------------- --------------- -----------
INCIDENT_ID number
PROBLEM_ID number
CREATE_TIME timestamp
CLOSE_TIME timestamp
STATUS number
FLAGS number
FLOOD_CONTROLLED number
ERROR_FACILITY text(10)
ERROR_NUMBER number
ERROR_ARG1 text(64)
ERROR_ARG2 text(64)
ERROR_ARG3 text(64)
ERROR_ARG4 text(64)
ERROR_ARG5 text(64)
ERROR_ARG6 text(64)
ERROR_ARG7 text(64)
ERROR_ARG8 text(64)
SIGNALLING_COMPONENT text(64)
SIGNALLING_SUBCOMPONENT text(64)
SUSPECT_COMPONENT text(64)
SUSPECT_SUBCOMPONENT text(64)
ECID text(64)
IMPACT number
adrci>
除了-p选项外,-mode选项有三个字段可用,分别是detail,basic,brief。后两者显示基本内容,不显示详细内容。
 
packaging incidents(打包事件)
oracle 11g的一个很强有力的工具是打包事件。利用这个打包事件压缩的文件夹提交给oracle的支持来帮助解决分析问题。
一旦你创建一个事件包,将添加一个或多个相关的问题到打包文件中。其中包括trace文件,dump文件等。
缺省情况下,每一个问题的事件包仅仅包括第一个和最后三个事件。事件包包含所有可以用于诊断的事件。也可以指定事件发生的时间或数
量范围来打包。
一旦你创建了事件包,那么你能添加或移除文件。
具体步骤如下:
1:创建一个逻辑包:使用命令是ips create package。该命令可以创建一个空包,也可以能会创建自动包含诊断数据的包。这个命令有很多
变量,你可以选择创建某一特定问题号,事件号,问题关键字,或基于期间的包。
2:添加诊断数据到逻辑包:这是一个可选步骤,如果你在第一步创建的是一个空包,那么你可以使用这一步骤添加诊断文件或数据。
3:产生zip文件:可以增量添加文件到zip文件里。
示例如下:
创建包:
adrci>ips create package
Created package 1 without any contents, correlation level typical
adrci>
添加诊断信息到空包中:
adrci>ips add incident 113769 package 1;
kaged: ADD INCIDENT
Cmd: --- incid 113769
Cmd: --- pkgid 1
adrci>
这一步仍然没有实际的诊断数据,你还需要执行第三部添加诊断元数据到包中。
adrci>ips generate package 4 in /u01/app/oracle/adrci/support
Cmd: GENERATE PACKAGE
Cmd: package id is 4
Cmd: file C:\ORCL11\APP\ORACLE
Cmd: --- mode full
adrci>
这个命令创建一个zip文件在/u01/app/oracle/adrci/目录中。这样创建的压缩文件称之为完全压缩文件。你也可以产生一个增量zip文件。
adrci> ips generate package 5 in /u01/app/oracle/adrci/support incremental
比如会产生以下两个文件:
ORA222_20070304124515_COM_1.zip
ORA222_20070304124515_INC_2.zip
第一个文件是完整zip文件,第二个是增量zip文件。
以下是ips命令的各种变种:
• ips create package creates an empty package.
• ips create package problem creates a package based on a problem ID.
• ips create package problem key creates a problem key–based package.
• ips create package incident creates a package based on an incident ID.
• ips create package time creates a package for a specified time range.
 
分享到:
评论

相关推荐

    oracle 11g 下载地址

    Oracle 11g作为一款成熟稳定的数据库管理系统,在企业级应用中扮演着重要的角色。通过深入了解其主要特性和配置方法,可以更好地发挥其优势,满足业务需求。希望以上内容能够帮助读者更好地理解和使用Oracle 11g。

    Oracle11g教程_初识Oracle11g

    Oracle 11g是Oracle公司推出的一个重要数据库管理系统版本,具有丰富的特性和强大的功能。本教程旨在引导初学者深入理解Oracle 11g的基础知识,包括其发展历程、新特性、体系结构、安装流程以及PL/SQL语言基础。 ...

    oracle 11g r2 download address

    Oracle 11g R2 作为一款成熟稳定的数据库产品,在企业级应用中发挥着重要作用。通过上述对 Database 11g R2 和 Grid 11g R2 的介绍,我们了解到它们各自的特点以及如何获取安装包。在实际部署过程中,还需要注意系统...

    Oracle 11g 实用教程

    Oracle 11g引入了许多新特性,如Real Application Clusters (RAC) 的增强、自动诊断存储库 (ADR)、内存管理和优化、实时应用测试等,这些特性使得Oracle 11g在企业级应用中表现更加出色。 ### 数据库基础知识 在...

    oracle11g完全参考手册缺少的40页

    虽然文件中并未直接提供342页到381页的具体内容,但我们还是可以基于Oracle 11g的功能和特性,以及一个完整的参考手册可能包含的内容,来构建这部分缺失页面可能涉及的知识点。 ### Oracle 11g数据库特性 Oracle ...

    oracle11g 中adrci的使用

    Oracle 11g 中的 ADRCI(Automatic Diagnostic Repository Command Interpreter)是一种命令行工具,用于查看和管理 Oracle 数据库的诊断日志和跟踪信息。ADRCI 工具可以帮助 DBA 快速了解数据库的健康状况,对问题...

    Oracle11g完全学习手册ppt

    Oracle 11g是Oracle公司推出的数据库管理系统的一个重要版本,具有高效、稳定和安全的特点,广泛应用于企业级数据管理。本“Oracle11g完全学习手册ppt”旨在为初学者和有经验的DBA提供全面的学习资源,帮助理解并...

    ORACLE11G新特性

    此外,Oracle 11G 还提供了 Health Monitor 和 Automatic Diagnostic Repository (ADR) 等工具,这些工具可以自动收集和分析诊断信息,并将它们存储在一个统一的位置(即 DIAGNOSTIC_DEST 指定的目录)中,从而帮助 ...

    oracle_11g下载链接.txt

    以下将详细介绍与Oracle 11g相关的知识点,包括其重要特性、安装配置方法以及在不同操作系统上的应用等方面。 ### Oracle 11g概述 Oracle 11g是甲骨文公司(Oracle Corporation)推出的一款企业级关系型数据库管理...

    Oracle11g_新特性及常用维护工具详解

    本章主要介绍了一些Oracle 11g在实际使用过程中可能遇到的问题及其解决方法。 - **3.1 Oracle11g默认安装使用保留的11g增强安全设置(包括审记和默认的口令概要文件** - **3.1.1 oracle数据库时提示“ORA-28002:7...

    Oracle 数据库 11g:可管理性概述

    Oracle Database 11g中的支持工作台为数据库管理员提供了一个集中化的工作平台,方便他们管理不同的诊断任务和请求。 总体而言,Oracle Database 11g在提高数据库可管理性方面做了大量的工作,通过引入多种自动化的...

    AIX上oracle11g安装步骤

    本文将详细介绍如何在AIX操作系统上安装和配置Oracle 11g数据库。整个过程分为几个关键步骤:操作系统准备、Oracle软件安装、Oracle数据库实例安装以及listener安装与配置。 #### 一、操作系统准备 操作系统准备...

    oracle11g+plsql详解

    Oracle 11g 是一款广泛使用的数据库管理系统,而 PL/SQL 是 Oracle 提供的一种过程化语言,用于编写数据库脚本和存储过程。本教程将详细解释如何使用 PL/SQL 连接到 Oracle 11g 数据库,以及配置远程访问。 首先,...

    <<Oracle9i&10g编程艺术:深入数据库体系结构>>电子书下载(PDF)

    - **Oracle 11g**:引入了自动诊断资源管理器(ADR)等新特性,进一步提高了数据库的可管理性。 - **Oracle 12c**:支持多租户架构,能够在一个数据库实例中托管多个数据库。 - **Oracle 18c及以上版本**:加强了...

    Expert Oracle Database 11g Administration

    - **数据加密**:介绍Oracle 11g中的数据加密技术,尤其是透明数据加密(TDE),这是一种无需修改应用程序即可实现的数据加密方案。 - **备份与恢复**:讨论了Oracle 11g中的备份策略和恢复流程,确保数据在发生故障时...

    oracle 11G

    ADR 是 Oracle 11g 中新增的功能之一,它能够帮助系统管理员快速定位并解决问题。通过收集和分析各种日志文件,ADR 可以自动生成诊断报告,这对于故障排除非常有帮助。 #### 2. **数据泵导入导出工具** Oracle 11g ...

    Oracle 11g全新特性完全解析XML成为热点

    ADR(Automatic Diagnostic Repository)是Oracle 11g中的一大亮点,它能自动捕获和记录数据库问题,提供健康检查,便于用户监控和管理数据库状态。IPS(Incident Packaging Service)则允许收集和打包与特定事件...

    Oracle 自动诊断资料档案库(ADR) 说明

    Oracle 自动诊断资料档案库(ADR)是Oracle数据库11g及更高版本中引入的一个重要特性,用于收集和存储各种诊断数据,以便于问题的排查和解决。它整合了多种Oracle产品和服务的诊断信息,包括数据库、自动存储管理(ASM)...

Global site tag (gtag.js) - Google Analytics