自動診断リポジトリ(Automatic Diagnostic Repository, ADR)とは

ADR(自動診断リポジトリ)

Oracle Database には、エラー診断を効率的に行うための 自動診断リポジトリ(ADR: Automatic Diagnostic Repository) という仕組みがあります。ADR は、データベースの異常や障害が発生した際に、それに関連する診断情報を一元管理するためのディレクトリ構造を持ちます。

本記事では、ADR の基本概念、格納される情報、利用方法、そして実践的なトラブルシューティングの手順について詳しく解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


1. ADR の基本概念

ADR は、以下のような特徴を持つ Oracle の診断情報管理機能です。

  • データベースのクラッシュやエラー発生時の診断データを自動収集
  • データベースだけでなく、リスナーや ASM などのコンポーネントの診断情報も管理
  • ディレクトリ構造に基づいて整理され、統一されたコマンド (adrci) で操作可能
  • alert.log、トレースファイル、ダンプファイル、ハング分析情報などを格納
  • 自動削除機能を備え、一定期間後に古い診断データを削除可能
  • Oracle Support との連携が可能(incident package の作成)
  • DIAGNOSTIC_DEST パラメータを使用して診断情報の格納先を指定可能

ADR により、データベース管理者(DBA)はエラー解析やトラブルシューティングを迅速に行うことができます。


2. ADR のディレクトリ構造と DIAGNOSTIC_DEST

ADR のファイルは、Oracle Database の ADR ベース・ディレクトリ配下に保存されます。

ADR の格納場所は、DIAGNOSTIC_DEST 初期化パラメータで指定されます。デフォルトの設定では、$ORACLE_BASE/diag が使用されます。

デフォルトの DIAGNOSTIC_DEST の確認方法:

SHOW PARAMETER DIAGNOSTIC_DEST

デフォルトの ADR ベースは次のパスです。

  • Linux/Unix: $ORACLE_BASE/diag
  • Windows: %ORACLE_BASE%\diag

ADR 内のディレクトリ構造は以下のようになっています。

$DIAGNOSTIC_DEST/
 ├── rdbms/ (データベース関連の診断情報)
 │   ├── [DB_NAME]
 │       ├── alert/ (アラートログ)
 │       ├── trace/ (トレースファイル)
 │       ├── incident/ (インシデントレポート)
 │       ├── cdump/ (クラッシュダンプ)
 │       ├── hm/ (ヘルスモニターレポート)
 │       ├── metadata/ (ADR メタデータ)
 │       ├── stage/ (一時ファイル保存)
 │       ├── sweep/ (処理待ちのファイル)
 ├── tnslsnr/ (リスナー関連の診断情報)
 ├── asm/ (ASM インスタンス関連の診断情報)

各ディレクトリには、トラブルシューティングに役立つ情報が格納されています。


3. V$DIAG_INFO ビューを使用した ADR の情報取得

ADR に関する情報を SQL で取得する場合、V$DIAG_INFO 動的パフォーマンスビューを使用できます。

3.1 V$DIAG_INFO の確認

以下の SQL を実行すると、ADR に関する情報が一覧表示されます。

SELECT * FROM V$DIAG_INFO;

このビューには、アラートログの場所や診断データの格納先、クラッシュダンプの場所などの情報が格納されています。

3.2 V$DIAG_INFO の主なカラム

カラム名説明
NAME情報の種類(Diag Trace、Alert Log、Incidentなど)
VALUE各情報の実際のディレクトリパスや設定値

例として、アラートログの保存先を取得するには、以下の SQL を実行します。

SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Alert';

4. adrci コマンドによる診断情報の操作

ADR の管理には adrci(Automatic Diagnostic Repository Command Interpreter)を使用します。

4.1 ADR のリストを表示

ADR の対象となるインスタンス一覧を表示するには、以下のコマンドを実行します。

adrci> show homes

4.2 アラートログの表示

アラートログの最新のエントリを表示するには、以下のコマンドを使用します。

adrci> show alert

また、特定の文字列を含むログを検索するには:

adrci> show alert -p "message_text like '%ORA-600%'"

5. 実践的なトラブルシューティングの流れ

  1. エラーが発生したら V$DIAG_INFO で ADR の場所を確認SELECT * FROM V$DIAG_INFO;
  2. アラートログの確認adrci> show alert
  3. 特定のエラーコードを含むログを検索adrci> show alert -p "message_text like '%ORA-600%'"
  4. インシデント情報を確認adrci> show incident
  5. 問題の詳細を確認adrci> show problem
  6. 古い診断情報を定期的に削除してストレージを節約adrci> purge -age 1440

6. まとめ

  • ADR(自動診断リポジトリ) は、Oracle Database のエラー診断情報を一元管理する仕組み。
  • DIAGNOSTIC_DEST により、ADR の格納先を変更可能。
  • V$DIAG_INFO を使用すると、ADR の詳細な情報を SQL で取得可能。
  • adrci を使用すると、エラー診断、インシデント管理、ログ検索、Oracle Support との連携が可能。
  • 適切に運用することで、障害対応を迅速化し、データベースの安定稼働を支援。

ADR の活用をマスターして、効果的なデータベース管理を実践しましょう!

[参考]
19 ADRCI: ADRコマンド・インタプリタ

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました