クリティカルエラーで発動
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 形式がある。
出力先パス
ADRCI で show log コマンド実行
実行日時
なお log.xml ファイルを直接参照してみると、上記以外に
レベル