Automatic Diagnostic Repository

ADRは、既存のDump File、Trace File、Alert log、およびOracleの様々なreportのようにfile baseで生成されるログを集めたストアです。このストアはもちろん、file baseで構成されています。この機能のためにOracle11gでは、既存のDump destinationの構造を新しい構造に変えました。

 

ADRは、基本的にストアですのでlog、dump、traceのような様々な種類のログ(Diagnostics Log)だけでなくRACのような多数のinstanceそして様々なagent、module、componentからあふれ出すログも一度に管理ができるように一本化して実装しています。

 

ADRディレクトリ構造

 

既存のDiagnostics Logの場合は、通常、$ ORACLE_BASE/ admin/ SID/サブとしてbdump、udump、cdump、adump、pfileなどで構成になっていてこれは、*_DUMP_DESTというパラメータを使用して指定されていました。

 

しかし、11gの場合は、これとは全く別の形を示しています。基本的にはDiagnostics LogはADRというカテゴリの中で区分されて保存されます。ですので、既存のadminサブにあったものは、今ADR BaseというADR root directoryサブとして保存されます。この場所は、DIAGNOSTIC_DESTというパラメータを使用して指定され、基本的にORACLE_BASEが指定されると、同じ位置を示し、もしORACLE_BASEが設定されていない場合は、$ ORACLE_HOME/ logというディレクトリをパラメータの値として使用します。

 

ADR-structure

 

ADRディレクトリは、上記の図のような構造を持ちます。上の図を見ると、不必要に中間ディレクトリが多い気がしますが、以下の内容で構成されています。

 

 DIAGNOSTIC_DEST/diag/PRODUCT_TYPE/PRODUCT_ID/INSTANCE_ID 

以下は、oracle11gがインストールされて、実際のディレクトリ構造です。

 

[/oracle/ORA111/diag/rdbms/ora111/ORA111] ls -al
total 120
drwxr-xr-x  13 oracle oinstall  4096 Aug 23 11:25 .
drwxr-x---   4 oracle oinstall  4096 Aug 23 11:25 ..
drwxr-xr-x   2 oracle oinstall  4096 Oct 22 16:12 alert
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 11:25 cdump
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 11:25 hm
drwxr-xr-x   7 oracle oinstall  4096 Aug 23 13:18 incident
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 11:25 incpkg
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 22:00 ir
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 13:18 lck
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 11:25 metadata
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 13:18 stage
drwxr-xr-x   2 oracle oinstall  4096 Aug 23 13:18 sweep
drwxr-xr-x   7 oracle oinstall 69632 Oct 22 16:09 trace

 

この構造をディレクトリnaming ruleに適用させてみると、DIAGNOSTIC_DESTは/ oracle/ ORA111でdiagというディレクトリの下にPRODUCT_TYPEはrdbms、PRODUCT_IDはora111、INSTANCE_IDはORA111と考えることができます。これにより、多数の製品と多数のinstanceを一つのADRで構成することができる形でADRのOracleの戦略的な構想を垣間見ることができます。

ADRのdiagnostic data

 

ADRのサブディレクトリの内容は、次のとおりです。

 

 ・alert:XML形式のalert logを保存しています。oracle11gからalert logをxml形式とtext formatの2形式を
  提供しています。しかし、メインはxml形式でoracleでも、これを解析して使用することをお勧めします。

 ・cdump:Core Fileたちにメモリdumpを含んでいます。

 ・incident:このディレクトリの下には、多数のサブディレクトリがあり、これは、特定の事件のdumpファイルを
  含んでいます。oracleは、それぞれの事件をidを付与して管理しているADRは、これをそれぞれのサブディレクトリに
  データを管理するものです。サブディレクトリの例は以下の通りです。

 

[/oracle/ORA111/diag/rdbms/ora111/ORA111/incident] ls -al
total 28
drwxr-xr-x   7 oracle oinstall 4096 Aug 23 13:18 .
drwxr-xr-x  13 oracle oinstall 4096 Aug 23 11:25 ..
drwxr-xr-x   2 oracle oinstall 4096 Aug 23 13:13 incdir_113
drwxr-xr-x   2 oracle oinstall 4096 Aug 23 13:13 incdir_114
drwxr-xr-x   2 oracle oinstall 4096 Aug 23 13:13 incdir_115
drwxr-xr-x   2 oracle oinstall 4096 Aug 23 13:13 incdir_116
drwxr-xr-x   2 oracle oinstall 4096 Oct 22 10:50 incdir_145

 

・trace:既存のbdumpとcdumpの内容がここに入り、background、foregroundのtraceファイルを保管しています。
 私たちが頻繁に使用する10046や10053イベントのtraceファイルもここに入ることになります。このディレクトリを見ると、
 従来のtrcという拡張子やtrmという拡張子を確認することができますが、これは、データベースがserchingやnavigation
 時に活用できるように構造的なmapを持っているtrace mapファイルです。udumpとbdumpを合わせ置いfile listを確認する
 ときに読みやすさを落ちますが、oracleは、これを自動化して人が直接参照する必要がないようにしようとしていると
 考えられます。

 

また、SQLを使用して、現在自分が使用している、あるいは、各プロセスのtraceファイルを見つけることができます。以下は、これらのsqlの例です。

 

SQL>SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';
VALUE                                   
----------------------------------------
/oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_ora_25988.trc

 

SQL>SELECT PID, PROGRAM, TRACEFILE FROM V$PROCESS;
PID PROGRAM                                  TRACEFILE
--- ------------------- ----------------------------------------
  1 PSEUDO              /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_ora_0.trc
  2 oracle@TEST(PMON)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_pmon_28990.trc
  3 oracle@TEST(VKTM)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_vktm_28992.trc
  4 oracle@TEST(DIAG)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_diag_28996.trc
  5 oracle@TEST(DBRM)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_dbrm_28998.trc
  6 oracle@TEST(PSP0)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_psp0_29000.trc
  7 oracle@TEST(LGWR)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_lgwr_29010.trc
  8 oracle@TEST(DIA0)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_dia0_29004.trc
  9 oracle@TEST(MMAN)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_mman_29006.trc
 10 oracle@TEST(DBW0)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_dbw0_29008.trc
 11 oracle@TEST(CKPT)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_ckpt_29012.trc
 12 oracle@TEST(SMON)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_smon_29014.trc
 13 oracle@TEST(RECO)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_reco_29016.trc
 14 oracle@TEST(MMON)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_mmon_29018.trc
 15 oracle@TEST(MMNL)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_mmnl_29020.trc
 16 oracle@TEST(D000)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_d000_29022.trc
 17 oracle@TEST(S000)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_s000_29024.trc
 18 oracle@TEST(CJQ0)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_cjq0_1405.trc
 19 oracle@TEST(FBDA)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_fbda_29275.trc
 20 oracle@TEST(SMCO)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_smco_29277.trc
 21 oracle@TEST(W000)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_w000_22970.trc
 22 oracle@TEST(QMNC)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_qmnc_29362.trc
 23 oracle@TEST(q000)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_q000_29526.trc
 24 oracle@TEST(q001)   /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_q001_29528.trc
 25 oracle@TEST         /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_ora_31085.trc
 26 oracle@TEST         /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_ora_25988.trc

 

・その他のディレクトリ:他health-monitor report(HM)、data repair report(IR)、SQL test cases、
 incident packages(INCPKG)等のディレクトリがあります。

ADR関連ツール

 

・V$ DIAG_INFO:このビューは、現在instanceの主要ADR locationの情報を示します。

SQL>select * from V$DIAG_INFO;
INST_ID NAME                   VALUE
------- ---------------------- ----------------------------------------
      1 Diag Enabled           TRUE
      1 ADR Base               /oracle/ORA111
      1 ADR Home               /oracle/ORA111/diag/rdbms/ora111/ORA111
      1 Diag Trace             /oracle/ORA111/diag/rdbms/ora111/ORA111/trace
      1 Diag Alert             /oracle/ORA111/diag/rdbms/ora111/ORA111/alert
      1 Diag Incident          /oracle/ORA111/diag/rdbms/ora111/ORA111/incident
      1 Diag Cdump             /oracle/ORA111/diag/rdbms/ora111/ORA111/cdump
      1 Health Monitor         /oracle/ORA111/diag/rdbms/ora111/ORA111/hm
      1 Default Trace File     /oracle/ORA111/diag/rdbms/ora111/ORA111/trace/ORA111_ora_25988.trc
      1 Active Problem Count   1
      1 Active Incident Count  50

・ADRCI:これはoracleが提供するcommand line方式のADR解析ツールです。ADR Commande Interpreterの略です。
 このツールは、主にADRの各種diagnostic dataやHealth Monitor reportを閲覧したりincidentまたは問題を
 zip fileとしてORACLE Supportに渡すIPS(Incident Packaging Service)を実行します。