Oracle 11g 新特性之如何使用ADRCI


 一。关于 ADR Command Interpreter (ADRCI)

  关于Automatic Diagnostic Repository (ADR)—

  一个存放数据库诊断日志、跟踪文件的目录,称作ADR base,对应初始化参数DIAGNOSTIC_DEST,如果设置了ORACLE_BASE环境变量,

  DIAGNOSTIC_DEST等于ORACLE_BASE,如果没有设置ORACLE_BASE,则等与ORACLE_HOME/log.

  关于ADRCI

  ADRCI Command-Line Utility 命令行工具,使用该工具查看ADR中的日志和跟踪信息,查看健康报告;

  还可以将相关错误日志和信息打包成zip文件,以便提供给oracle support分析。

  在ADRCI工具中可以执行很多命令,另外可以象sqlplus一样执行脚本。

  二。开始使用ADRCI

  1.运行ADRCI,$ORACLE_HOME/bin/adrci

  代码:

  [root@ractest ~]# su - oracle

  [oracle@ractest ~]$ which adrci

  ~/11g/bin/adrci

  [oracle@ractest ~]$ adrci

  ADRCI: Release 11.1.0.4.0 - Beta on Thu Jul 12 05:39:29 2007

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

  ADR base = "/home/oracle"

  adrci>>

  退出ADRCI,在adrci>>提示符下敲入exit或者quit , 回车大小写敏感:在adrci中命令大小写不敏感

  代码:

  adrci>>SHOW traCEfile

  diag/rdbms/orcl/orcl/trace/orcl_ora_20187.trc

  diag/rdbms/orcl/orcl/trace/orcl_fbar_11388.

  但使用搜索串的时候是敏感的,比如:

  SHOW TRACEFILE %mmon%

  2.如何得到帮助信息:

  (1)得到adrci中的命令列

  代码:

  adrci>>help

  HELP [topic]

  Available Topics:

  CREATE REPORT

  ……

  (2)也可以使用adrci –help来得到adrci的命令使用和选项。如:

  代码:

  [oracle@ractest ~]$ adrci -help

  Syntax:

  adrci [-help] [script=script_filename]

  [exec = "one_command [;one_command;……]"]

  Options      Description                     (Default)

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

  script       script file name                (None)

  help         help on the command options     (None)

  exec         exec a set of commands          (None)

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

  (3)如何得到特定命令的帮助信息:

  adrci>>HELP SHOW TRACEFILE

  Usage: SHOW TRACEFILE [file1 file2 ……] [-rt | -t]

  [-i inc1 inc2 ……] [-path path1 path2 ……]

  ……………。

  3.使用ADRCI进行批处理命令或者脚本

  (1) 使用exec选项,用分号将命令隔开

  这里文档中有个小问题,文档中写ADRCI EXEC="COMMAND[; COMMAND]……",

  只能在windows平台这样写,在unix/linux平台下必须用小写来执行。

  代码:

  adrci>>show homes;show base; echo '20070712'

  ADR Homes:

  diag/rdbms/orcl/orcl

  ADR base is "/home/oracle"

  20070712

  adrci>>

  adrci>>

  adrci>>exit

  [oracle@ractest ~]$ adrci exec="show homes;echo '20070712';echo '';show base; "

  ADR Homes:

  diag/rdbms/orcl/orcl

  20070712

  ADR base is "/home/oracle"

(2) 使用script选项。adrci SCRIPT=adrci_script.txt

  但shahand使用的beta版似乎还有些问题……好像没有任何结果一样

  代码:

  [oracle@ractest ~]$ cat /tmp/a

  show homes;

  [oracle@ractest ~]$ adrci script=/tmp/a

  [oracle@ractest ~]$ cat /tmp/a

  fadsfdsa

  [oracle@ractest ~]$ adrci script=/tmp/a

  [oracle@ractest ~]$ cat /tmp/a

  show trace;

  [oracle@ractest ~]$ adrci script=/tmp/a

  [oracle@ractest ~]$ cat /tmp/a

  SET HOMEPATH /home/oracle/diag/rdbms/orcl/orcl;show trace;

  [oracle@ractest ~]$ adrci script=/tmp/a

  [oracle@ractest ~]$

  三。使用ADRCI查看Oracle数据库后台报警日志(alert_sid.log)和跟踪文件

  注意:以下大部分命令都需要用Ctrl+C 来结束,并返回到adrci命令行

  1.查看完整alert信息:

  adrci>>SHOW ALERT

  2. 查看最新alert信息:

  adrci>> SHOW ALERT –TAIL

  查看最新20条alert信息:

  adrci>> SHOW ALERT -TAIL 20

  只查看600的错误

  adrci>>SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-600%'"

  查看ORA-错误信息,注意这里的参数很好,比较人性化,可以帮助提供错误时间

  代码:

  再用以下该命令的帮助:

  代码:

  adrci>>help show alert

  Usage: SHOW ALERT [-p <predicate_string>] [-tail [num]] [-v]

  [-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 in the alert message's

  XML schema. To get the field definitions, use command: "describe&

  3.查看跟踪文件

  常用的有:

  (1)列出所有跟踪文件: SHOW TRACEFILE

  (2)模糊查询跟踪文件,比如某个进程的,注意这里区分大小写 SHOW TRACEFILE  %mmon%

  (3)可以指定某个路径 SHOW TRACEFILE %mmon% -PATH /home/steve/temp

  (4)象ls那样按时间排序 SHOW TRACEFILE -RT

  四。其他体验和说明

  1.关于在adrci中执行os命令,可以直接在adrci中执行os命令。

  所以当发出一个不存在的命令的时候,错误信息也就是系统返回的了。虽然信息有点怪 …明明在ksh下,却返回bash的错误……

  代码:

adrci>>id
----------shahand偶然试出来的,居然可以直接执行
uid=10000(oracle) gid=1001(dba) groups=1001(dba),1002(oinstall)
context=user_u:system_r:unconfined_t
adrci>>host date
DIA-48415: Syntax error found in string [host date] at column [9]
adrci>>host
[oracle@ractest ~]$ exit
exit
adrci>>!                                          -------------这样不行
/bin/bash: -c: line 0: syntax error near unexpected token `newline'

/bin/bash: -c: line 0: `!'

Additional information: 512
adrci>>! date                                   -------------这就可以
Thu Jul 12 06:20:40 CST 2007
--------------------------------------------------------------------
[oracle@ractest ~]$ ksh
$ adrci
ADRCI: Release 11.1.0.4.0 - Beta on Thu Jul 12 06:28:14 2007
Copyright (c) 1982, 2006, Oracle.  All rights reserved.
ADR base = "/home/oracle"
adrci>>abc
/bin/bash: abc: command not found
--------明明在ksh下,却返回bash的错误….
Additional information: 32512
adrci>>ksh
$ abc
ksh: abc: not found
 


  2.确认了在adrci中使用的alert是log.xml,而非alert_orcl.log

  对alert进行置空(> file),adrci不受影响;对log.log进行置空,adrci返回的错误挺吓人的:internal error code,跟00600一个风格啊……应该是某些tag找不到,就报这么狠的错误

  代码:

adrci>>show alert
ADR Home = /home/oracle/diag/rdbms/orcl/orcl:
**********************************************************
DIA-48001: internal error code, arguments: [17183],
[0x84B178C], [], [], [], [], [], []
DIA-48154: reached end of file for alert log
DIA-48102: encountered the end-of-file when reading&nb


  3.在adrci中不能使用退格(backspace)怎么办

  跟sqlplus一样,有下面几种选择:

  用del键;

  使用Ctrl+backspace;

  使用Ctrl+u删除整行(bash下);

  在os命令行下stty erase ^h (可以直接写到oracle的。profile/.bash_profile下面)

  4.另外adrci一个重要的功能是查看Incident和对Incident打包的功能

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3