クリティカルエラーで発動

Oracle11g より ORA-600、ORA-7445、ORA-4031などクリティカルエラーが発生した場合、
自動診断リポジトリ( ADR : Automatic Diagnostic Repository )が作成される。



ADR とは

ADR はトレースファイルや診断データを扱うシステム管理のリポジトリで、
インシデント、アラート、トレース情報、コアダンプ等を保持している。
ベースディレクトリは、初期化パラメータの DIAGNOSTIC_DEST のパスとなる。

パスの確認方法

動的パフォーマンスビューの v$diag_info で確認できる。

ビューの定義

SQL> desc v$diag_info

 名前          NULL?    型
 ----------- -------- --------------
 INST_ID              NUMBER
 NAME                 VARCHAR2(64)
 VALUE                VARCHAR2(512)

データイメージ

SQL> select * from v$diag_info;

 INST_ID NAME                  VALUE
-------- --------------------- ------------------------------------------------
       1 Diag Enabled          TRUE
       1 ADR Base              /opt/app/oracle
       1 ADR Home              /opt/app/oracle/diag/rdbms/orcl/ORCL
       1 Diag Trace            /opt/app/oracle/diag/rdbms/orcl/ORCL/trace
       1 Diag Alert            /opt/app/oracle/diag/rdbms/orcl/ORCL/alert
       1 Diag Incident         /opt/app/oracle/diag/rdbms/orcl/ORCL/incident
       1 Diag Cdump            /opt/app/oracle/diag/rdbms/orcl/ORCL/cdump
       1 Health Monitor        /opt/app/oracle/diag/rdbms/orcl/ORCL/hm
       1 Default Trace File    /opt/app/oracle/diag/rdbms/orcl/ORCL/trace
       1 Active Problem Count  1
       1 Active Incident Count 1

11行が選択されました。

出力ディレクトリ

例えば Diag Incident のディレクトリには、その配下に更に対象インシデント毎に
incdir_<番号>のディレクトリが作成され、中には対応するトレースファイルが出力
されている。アラートログにもインシデントのパスが記載されるので、それから特定できる。

/opt/app/oracle/diag/rdbms/orcl/ORCL/incident
  incdir_xxx/
    ORCL_ora_<プロセスID>_ixxx.trc
    ORCL_ora_<プロセスID>_ixxx.trm
  incdir_yyy/
    ORCL_ora_<プロセスID>_ixxx.trc
    ORCL_ora_<プロセスID>_ixxx.trm

トレースファイルの中には、ORA エラーや Call Stack Trace、Binary Stack Dump
などの情報が記載されている。

絞込むためには、インシデント番号や時間範囲をキーとして、パッケージ作成を行う。

【追記】Oracle12c ADR の新機能

Oracle12c の ADR では、実行された DDL のみをまとめた「 DDLログ」機能が追加された。

DDL ログ

初期化パラメータ「enable_ddl_logging=true」で DDL ログの取得が有効化され、
DDL コマンドや実行時間、クライアント情報が DDL ログファイルに出力される。
出力形式には、テキスト形式と XML 形式がある。

出力先パス
  • テキスト形式: $ADR_HOME/log/ddl_SID名.log
  • XML 形式: $ADR_HOME/log/ddl/log.xml
  • ADRCI で show log コマンド実行

    実行日時と、実行したDDLコマンドが確認可能。

    なお log.xml ファイルを直接参照してみると、上記以外に
    レベル、ホストID、ホストIPアドレス 等も出力されている。