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
-
Usage: SHOW ALERT [-p <predicate_string>] [-term]
-
[ [-tail [num] [-f]] | [-file <alert_file_name>] ]
-
Purpose: Show alert messages.
-
-
Options:
-
[-p <predicate_string>]: The predicate string must be double-quoted.
-
The fields in the predicate are the fields:
-
ORIGINATING_TIMESTAMP timestamp
-
MESSAGE_TEXT text(2049)
-
MESSAGE_ARGUMENTS text(129)
-
...
-
[-term]: Direct results to terminal. If this option is not specified,
-
the results will be open in an editor.
-
By default, it will open in emacs, but "set editor" can be used
-
to set other editors.
-
-
Examples:
-
show alert
-
show alert -p "message_text like '%incident%'"
-
show alert -tail 20
查找trace文件
可以通过ADRCI查看存在于ADR中的trace文件的名字,而且可以对名字施加过滤:
-
匹配一个字符串的文件
-
某个目录下面的文件
-
属于某个事件的文件
-
Usage: SHOW TRACEFILE [file1 file2 ...] [-rt | -t]
-
[-i inc1 inc2 ...] [-path path1 path2 ...]
-
-
Purpose: List the qualified trace filenames.
-
-
Examples:
-
1. Show all the trace files under the current home
-
"show tracefile"
-
2. Show all the mmon trace files in time reverse order
-
"show tracefile %mmon% -rt"
-
3. Show all trace files under incidents 123 456, and /home/someone/temp
-
"show tracefile -i 123 456 -path /home/someone/temp"
查看事件
SHOW INCIDENT命令显示开放事件的信息,包括ID,问题键,建立时间。
-
Usage: SHOW INCIDENT [-p <predicate_string>]
-
[-mode BASIC|BRIEF|DETAIL]
-
[-last <num> | -all]
-
[-orderby (field1, field2, ...) [ASC|DSC]]
-
-
Purpose: Show the incident information. By default, this command will
-
only show the last 50 incidents which are not flood controlled.
-
-
Examples:
-
show incident
-
show incident -mode detail
-
show incident -mode detail -p "incident_id=123"
把事件打包
事件包是包含针对一到多个问题的事件信息的集合。用户通过把事件打包并发送到Oracle技术支持来获得帮助。
详细信息可以参考
阅读(2807) | 评论(0) | 转发(0) |