2017.10.25
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ディレクトリは、上記の図のような構造を持ちます。上の図を見ると、不必要に中間ディレクトリが多い気がしますが、以下の内容で構成されています。
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)を実行します。