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. 実践的なトラブルシューティングの流れ
- エラーが発生したら
V$DIAG_INFOで ADR の場所を確認SELECT * FROM V$DIAG_INFO; - アラートログの確認
adrci> show alert - 特定のエラーコードを含むログを検索
adrci> show alert -p "message_text like '%ORA-600%'" - インシデント情報を確認
adrci> show incident - 問題の詳細を確認
adrci> show problem - 古い診断情報を定期的に削除してストレージを節約
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専門のエージェントで非公開求人をチェックしてみませんか?




コメント