Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2445427
  • 博文数量: 328
  • 博客积分: 4302
  • 博客等级: 上校
  • 技术积分: 5486
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-01 11:14
个人简介

悲剧,绝对的悲剧,悲剧中的悲剧。

文章分类

全部博文(328)

文章存档

2017年(6)

2016年(18)

2015年(28)

2014年(73)

2013年(62)

2012年(58)

2011年(55)

2010年(28)

分类: Oracle

2014-06-03 15:39:34

ADRCI是一个命令行工具,他是11g引入的错误诊断框架的组成部分,它可以:
  • 在Automatic Diagnostic Repository查看诊断数据
  • 查看健康监控报告
  • 打包事件和问题信息

诊断信息包括事件和问题描述、trace file、dumps、健康监控报告、alert log等。ADRCI拥有丰富的命令,可以通过交互方式使用,也可以在脚本中使用

相关概念


自动诊断仓库(ADR)

一个基于文件的仓库,存储了DB诊断信息,例如traces、dumps、alert log、健康监控报告等。它对于多个实例和产品拥有统一的目录结构。从11g开始,DB、ASM和其他产品或组件都会把诊断数据放置到ADR,每个实例一个单独的ADR Home目录。

问题Problem

DB中的严重错误,包括内部错误比如ORA-00600和其他严重错误例如ORA-07445 (operating system exception) or ORA-04031 (out of memory in the shared pool)。问题被ADR记录,每个问题有一个问题键(problem key)和单独的ID。

事件Incident

一个问题的一次发生成为一个事件,它在ADR中被记录。每个时间被一个数字ID标识,这个ID在ADR中是唯一的。当一个事件发生时,DB会在alert log里面添加一个条目,发送一个时间警告到EM,收集事件相关的诊断信息到dump files里面,用事件ID来标记事件dumps,把事件dumps存储到ADR相关目录中。关键错误的诊断和解决通常由一个事件警告开始。你可以通过ADRCI得到事件列表

问题代码(problem key)

每个问题都有事件键,是一个包含错误代码的字符串,有时包含错误参数。如果两个事件的错误键匹配的话,认为这两个时间是由同样的原因引起。

ADR Home

ADR Home是针对特定产品或组件的特定实例的,包含所有诊断数据的根目录。例如,一个拥有ASM的RAC环境,每个DB实例和每个ASM实例都有自己的ADR home,所有的ADR home的结构都是一样的。标准的ADR home的子目录包括alert、trace、incident。所有ADR home都位于ADR base。
一些ADRCI命令可以同时工作在多个ADR home的情况下。homepath 配置有ADR homes,用来寻找诊断数据

ADR Base

为了能够关联多个ADR home的数据,ADR homes被一起放置到一个根目录,称为ADR base。一个DB的ADR base由初始化参数DIAGNOSTIC_DEST进行设置,如果此参数省略或为null,DB会设置为默认值。当多个实例共享一个Oracle home,无论是多个普通实例还是RAC,当他们设置ADR base时,最后一个启动的实例确定默认的ADR base

Homepath

所有ADRCI命令基于当前的ADR homes来分析诊断数据。某些命令允许ADR home设置为多个地址,其他的不行。ADRCI homepath决定了当前的ADR homes,通过指定ADR base下面的一个目录来实现。如果指向一个ADR home 目录,那么这个目录就是当前的home;如果指向了ADR home目录的上级目录,那么这个目录下面的所有目录都是当前的。


使用ADRCI


ADRCI的使用支持交互式和批处理式。

交互式

确定ORACLE_HOME和PATH环境变量设置好,输入ADRCI就可以启动一个交互的接口来运行命令,可以通过键入help [topic]来查看可用的命令以及帮助

批处理模式

通过这种方式,用户可以一次执行一组命令,避免了提示和输入,同时可以在其他程序或脚本中执行。有两种使用方式,一是把命令
ADRCI EXEC="COMMAND[; COMMAND]..."
ADRCI SCRIPT=SCRIPT_FILE_NAME


查看告警日志


从11g开始,alert log通过XML和文本两种方式生成,用户可以用编辑器来浏览两种格式的日志,或者用ADRCI来查看XML格式的日志,当然是去掉了标签的。默认ADRCI使用默认editor来显示日志,用户可以使用SET EDITOR来修改该编辑器。

通过ADRCI查看alert log

  1. Usage: SHOW ALERT [-p <predicate_string>] [-term]
  2.                     [ [-tail [num] [-f]] | [-file <alert_file_name>] ]
  3.   Purpose: Show alert messages.

  4.   Options:
  5.     [-p <predicate_string>]: The predicate string must be double-quoted.
  6.     The fields in the predicate are the fields:
  7.         ORIGINATING_TIMESTAMP timestamp
  8.         MESSAGE_TEXT text(2049)
  9.         MESSAGE_ARGUMENTS text(129)
  10. ...
  11.     [-term]: Direct results to terminal. If this option is not specified,
  12.     the results will be open in an editor.
  13.     By default, it will open in emacs, but "set editor" can be used
  14.     to set other editors.

  15.   Examples:
  16.     show alert
  17.     show alert -p "message_text like '%incident%'"
  18.     show alert -tail 20


查找trace文件


可以通过ADRCI查看存在于ADR中的trace文件的名字,而且可以对名字施加过滤:
  • 匹配一个字符串的文件
  • 某个目录下面的文件
  • 属于某个事件的文件
  1. Usage: SHOW TRACEFILE [file1 file2 ...] [-rt | -t]
  2.                         [-i inc1 inc2 ...] [-path path1 path2 ...]

  3.   Purpose: List the qualified trace filenames.

  4.   Examples:
  5.     1. Show all the trace files under the current home
  6.        "show tracefile"
  7.     2. Show all the mmon trace files in time reverse order
  8.        "show tracefile %mmon% -rt"
  9.     3. Show all trace files under incidents 123 456, and /home/someone/temp
  10.        "show tracefile -i 123 456 -path /home/someone/temp"

查看事件


SHOW INCIDENT命令显示开放事件的信息,包括ID,问题键,建立时间。
  1. Usage: SHOW INCIDENT [-p <predicate_string>]
  2.                        [-mode BASIC|BRIEF|DETAIL]
  3.                        [-last <num> | -all]
  4.                        [-orderby (field1, field2, ...) [ASC|DSC]]

  5.   Purpose: Show the incident information. By default, this command will
  6.            only show the last 50 incidents which are not flood controlled.

  7.   Examples:
  8.     show incident
  9.     show incident -mode detail
  10.     show incident -mode detail -p "incident_id=123"

把事件打包


事件包是包含针对一到多个问题的事件信息的集合。用户通过把事件打包并发送到Oracle技术支持来获得帮助。

详细信息可以参考 
阅读(2807) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~