ADR Command Interpreter (ADRCI)使用ガイド

 Oracle 11gからログ関連を広くXMLフォーマットを活用し、
一目でわかりづらくなりました。そこで登場したのはADRCIです。
本説明はOracle 11g R2で確認しています。
Automatic Diagnostic Repository (ADR)はデータベース診断ログ、トレースファイルを格納する場所で、
パラメータDIAGNOSTIC_DESTに保存場所(ADR Base)を設定できます。
SQL> show parameter DIAGNOSTIC_DEST

NAME                TYPE        VALUE
------------------- ----------- ----------------
diagnostic_dest     string      /u01/oracle/app

一般的にORACLE_BASEと同じ場所となっています。
ORACLE_BASEが設定されていない場合、ORACLE_HOME/logに格納されます。
ADRCIではログの参照、レポートの生成、スクリプトの実行が可能です。
診断ファイルについて下記のSQLから参照可能です:
SELECT name,value FROM v$diag_info;

ADRCIのコマンドは大文字小文字区別しないが、検索文字列を利用する場合区別します。

[oracle@CentOS53 bbed]$ adrci

ADRCI: Release 11.2.0.1.0 - Production on Thu Oct 29 11:12:02 2009

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

ADR base = "/u01/oracle/app"
adrci>

1、アラートログの参照:

adrci> show alert

Choose the alert log from the following homes to view:

1: diag/rdbms/o11g2/o11g2
2: diag/tnslsnr/CentOS53/listener
Q: to quit

Please select option:

1:データベースのアラートログを参照する(viで開く)
2:リスナーログの参照(viで開く)
q:戻る

最新20行を参照する場合:
adrci> show alert -tail 20
DIA-48449: Tail alert can only apply to single ADR home
Oops,エラー出ました。
これはどっちのログから検索するかわからないからHOMEを設定しろというエラーですね
adrci> show alert

Choose the alert log from the following homes to view:

1: diag/rdbms/o11g2/o11g2
2: diag/tnslsnr/CentOS53/listener
Q: to quit

Please select option: q
adrci> set home diag/rdbms/o11g2/o11g2 ; show alert -tail 20
で大丈夫です。

特定のORAエラーを検索する:
adrci> SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-600%'"

2、問題点の参照:

adrci> show problem

ADR Home = /u01/oracle/app/diag/rdbms/o11g2/o11g2:
*************************************************************************
0 rows fetched

ADR Home = /u01/oracle/app/diag/tnslsnr/CentOS53/listener:
*************************************************************************
0 rows fetched

3、その他イベントの参照:

adrci> show incident

ADR Home = /u01/oracle/app/diag/rdbms/o11g2/o11g2:
*************************************************************************
0 rows fetched

ADR Home = /u01/oracle/app/diag/tnslsnr/CentOS53/listener:
*************************************************************************
0 rows fetched

参照内容を外部ファイルへ出力する:
adrci> spool report
adrci> spool
Current spooling to report
adrci> show problem

ADR Home = /u01/oracle/app/diag/rdbms/o11g2/o11g2:
*************************************************************************
0 rows fetched

ADR Home = /u01/oracle/app/diag/tnslsnr/CentOS53/listener:
*************************************************************************
0 rows fetched

adrci> spool off
ローカルではreport.adoのレポートファイルが作成されました。

4、トレースファイル一覧の参照:

adrci> show tracefile
     diag/rdbms/o11g2/o11g2/trace/o11g2_ora_30606.trc
     ......

特定のトレースファイルを検索する:
adrci> show tracefile %mmon%
     diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_14751.trc
     diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_14623.trc
     diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_3064.trc
     diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_16625.trc
     diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_30520.trc

パスを指定したトレースファイルの検索:
adrci> show tracefile %mmon_14751% -PATH <ファイルPATH>

最新時間順でトレースファイルをソート表示する:
adrci> show tracefile %mmon% -RT
   28-OCT-09 09:34:11  diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_3064.trc
   27-OCT-09 11:03:28  diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_16625.trc
   23-OCT-09 11:12:27  diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_30520.trc
   23-OCT-09 10:33:38  diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_14751.trc
   23-OCT-09 09:58:46  diag/rdbms/o11g2/o11g2/trace/o11g2_mmon_14623.trc
「;」で区切れば複数のコマンドを一気に実行可能です(スクリプト)
adrci> show homes;show base; echo '2009/10/25';
ADR Homes:
diag/rdbms/o11g2/o11g2
diag/tnslsnr/CentOS53/listener
ADR base is "/u01/oracle/app"
2009/10/25
*起動時にSCRIPT=script.txtでスクリプトを実行できます。

OSのコマンドを実行する:
adrci> host "id"
uid=440(oracle) gid=200(oinstall) 所属グループ=200(oinstall),201(dba)
公式のドキュメントを参考に:
http://otndnld.oracle.co.jp/document/products/oracle11g/111/doc_dvd/server.111/E05768-02/adrci.htm#11969

個人的にSQLPLUSのような「ed」コマンドがほしいですね;
毎回スクリプトを編集すると
host "vi script.txt"
となります;