Oracle自動診断リポジトリ(ADR)の仕組みと運用ガイド

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

Oracle Databaseの運用において、エラー解析の効率化は不可欠です。本記事では、診断情報を一元管理する「Oracle自動診断リポジトリ(ADR)」の基本概念から、ADRを用いたトラブルシューティングの効率的な手順までを解説します。

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

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


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

ADR(Automatic Diagnostic Repository)は、データベースの障害やエラーに関連する情報を一元管理するファイルベースのディレクトリ構造です。アラートログ、トレースファイル、ダンプファイルなどが階層的に整理されており、DBAはここを参照することで迅速な状況把握が可能です。

ADRが管理する主な情報

  • アラートログ (alert.log): データベースの重要なイベントやエラーの記録。
  • トレースファイル: セッションやバックグラウンドプロセスの詳細な動作ログ。
  • ダンプファイル: クラッシュ時のメモリ情報など。
  • ヘルスモニターレポート: 定期的な健康診断の結果。

ADRの確認とパス設定(DIAGNOSTIC_DEST)

ADRの基点は DIAGNOSTIC_DEST 初期化パラメータで定義され、デフォルトでは $ORACLE_BASE/diag です。

パラメータ確認

以下のSQLを実行し、現在の設定値を確認します。

-- 現在の診断情報格納先を確認
SHOW PARAMETER DIAGNOSTIC_DEST

ADRのディレクトリ構造

ディレクトリは、以下の構成でコンポーネントごとに分類されています。

パス配下内容
rdbms/データベースの診断情報
tnslsnr/リスナーの診断情報
asm/ASMインスタンスの診断情報

SQLでの診断情報取得(V$DIAG_INFO)

ADRの詳細なパス情報は、動的パフォーマンスビュー V$DIAG_INFO を使用してSQLから確認できます。

V$DIAG_INFOの実行例

-- ADR関連パスの一覧を表示
SELECT NAME, VALUE FROM V$DIAG_INFO;

-- アラートログの絶対パスのみを取得
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Diag Alert';

adrciコマンドによるログ管理

ADRの操作には専用のコマンドラインツール adrci(Automatic Diagnostic Repository Command Interpreter)を使用します。

よく使う操作手順

  1. 診断先ホームの確認
    adrci> show homes
  2. アラートログの閲覧
    # 全表示
    adrci> show alert # ORAエラーの抽出
    adrci> show alert -p "message_text like '%ORA-%'"
  3. 古い診断情報の削除(領域解放)不要なファイルが蓄積するとディスクを圧迫するため、定期的な削除が必要です。
    # 1440分(24時間)経過した古いデータを削除
    adrci> purge -age 1440

トラブルシューティングの基本フロー

障害発生時は、以下の順序で調査を進めるのが定石です。

  1. 場所の特定: SELECT * FROM V$DIAG_INFO; で各種ログパスを確認。
  2. ログの確認: adrci でアラートログを確認し、障害の発生時刻と内容を特定。
  3. インシデント詳細確認: 関連する show incidentshow problem を実行。
  4. パッケージ作成: 必要に応じてOracle Support提出用のパッケージを作成(ips pack)。

よくある質問(FAQ)

Q1. ADRのデータ削除は安全ですか?

A. はい。adrcipurge コマンドを使用すれば、整合性を保ちながら古い情報を削除できます。手動で rm コマンドを実行することは非推奨です。

Q2. DIAGNOSTIC_DESTを変更する影響は?

A. 変更すると新規ログはその先に出力されます。運用中に変更する場合は、OS上の権限設定とディレクトリ作成を事前に済ませる必要があります。

Q3. ログが非常に大きいです。どうすればよいですか?

A. adrci で古い情報をパージしてください。それでも大きい場合は、トレースファイルの出力レベル(SQL_TRACE等)が過剰になっていないか見直す必要があります。


まとめ

  • ADRは診断情報の一元管理基盤であり、DBAの必須ツールです。
  • V$DIAG_INFO でパスを確認し、adrci でログ検索・管理を行います。
  • 定期的な purge でストレージの肥大化を防ぐ運用が重要です。

本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。


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

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

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

コメント

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