CDB構成におけるログと自動診断リポジトリ(ADR)

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

Oracle Database 12c以降で導入されたCDB構成(コンテナ・データベース構成)では、複数のPDB(プラガブル・データベース)を1つのCDB(コンテナ・データベース)内に統合して管理します。

この構成下では、従来の単一データベースとログの出力構造が大きく異なります。特に初心者が誤解しがちな点は、「PDBごとにアラートログがある」と思い込んでしまうことです。

結論から言えば、PDB単位ではログファイルは生成されません。すべてのログはCDBインスタンスに一元化されて記録されます。

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

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


✅ この記事でわかること

  • ADR(自動診断リポジトリ)の概要
  • CDB構成におけるログの構造
  • なぜPDB単位でログが存在しないのか
  • ログ確認手順とADRCIの活用方法
  • 誤解を避けるためのポイント

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

ADR(Automatic Diagnostic Repository)は、Oracle Databaseの障害情報を統合管理するフレームワークで、以下のような情報が格納されます。

格納情報内容
アラートログ起動・停止、エラーなど
トレースファイル各種プロセスの詳細動作
ダンプファイル重大障害時のメモリ情報
incidentログORA-00600やORA-07445など

2. 【重要】CDB構成のログ出力構造とPDBの扱い

❗ PDBには独自のアラートログは存在しない

PDBはあくまでCDBの一部として動作するサブデータベースです。したがって、PDBの起動・停止、ユーザー操作、障害などのログは、すべてCDBインスタンスのアラートログに記録されます


【図】CDB構成とログ出力の流れ(テキスト図)

+------------------------------------------+
| CDB$ROOT |
| +--------------------------------------+ |
| | インスタンス名:CDB1 | |
| | → アラートログ:alert_CDB1.log | |
| | → トレースファイル:trace/*.trc | |
| +----------------+---------------------+ |
↓ ↓
+--------+--------+ +-------+--------+
| PDB1 | | PDB2 |
| ユーザー操作 | | アプリケーション|
| エラー発生 | | 起動/停止など |
| → CDBに記録 | | → CDBに記録 |
+-----------------+ +-----------------+
アラートログの出力例

2025-05-01T16:52:14.754609+09:00
Completed: alter pluggable database all open
2025-05-01T16:53:19.589329+09:00
PDB01(3):TABLE AUDSYS.AUD$UNIFIED: ADDED INTERVAL PARTITION SYS_P248 (131) VALUES LESS THAN (TIMESTAMP' 2025-06-01 00:00:00') ★PDB01 の出力
2025-05-01T16:53:22.832525+09:00
TABLE SYS.WRP$_REPORTS: ADDED INTERVAL PARTITION SYS_P241 (5600) VALUES LESS THAN (TO_DATE(' 2025-05-02 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_DETAILS: ADDED INTERVAL PARTITION SYS_P242 (5600) VALUES LESS THAN (TO_DATE(' 2025-05-02 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
TABLE SYS.WRP$_REPORTS_TIME_BANDS: ADDED INTERVAL PARTITION SYS_P245 (5599) VALUES LESS THAN (TO_DATE(' 2025-05-01 01:00:00', 'SYYYY-MM-DD HH24:MI:SS', 'NLS_CALENDAR=GREGORIAN'))
2025-05-01T16:56:18.118892+09:00
Resize operation completed for file# 3, fname /u01/app/oracle/oradata/V19M/sysaux01.dbf, old size 716800K, new size 727040K
2025-05-01T16:56:18.176886+09:00
PDB01(3):Resize operation completed for file# 10, fname /u01/app/oracle/oradata/V19M/PDB01/sysaux01.dbf, old size 481280K, new size 491520K
2025-05-01T16:56:36.849266+09:00
PDB02(4):TABLE AUDSYS.AUD$UNIFIED: ADDED INTERVAL PARTITION SYS_P248 (131) VALUES LESS THAN (TIMESTAMP' 2025-06-01 00:00:00') ★PDB02 の出力
2025-05-01T17:06:21.008185+09:00
PDB02(4):Resize operation completed for file# 14, fname /u01/app/oracle/oradata/V19M/PDB02/sysaux01.dbf, old size 481280K, new size 491520K

3. ADRのディレクトリ構成とパス

OracleはADR配下にすべてのログを配置します。

$ORACLE_BASE/diag/
├── rdbms/
│ └── <DB名>/
│ └── <インスタンス名>/
│ ├── alert/ ← XML形式ログ
│ ├── trace/ ← トレース・アラートログ(.trc/.log)
│ └── incident/
└── tnslsnr/
└── <ホスト名>/
└── <リスナー名>/ ← リスナーログ

4. アラートログ確認方法(例:CDB1)

$ tail -f $ORACLE_BASE/diag/rdbms/cdb1/cdb1/trace/alert_cdb1.log

※ ここにPDBの起動・クローズ、ユーザー作成、ORAエラーなどすべてが記録される。

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

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


5. adrciコマンドの活用

ADRCIを使えば、CUI環境でも迅速にログ確認が可能です。

$ adrci
ADR base = "/u01/app/oracle"
adrci> show alert -tail 20
adrci> show incident
adrci> show trace

ADRホームの一覧

adrci> show homes
diag/rdbms/cdb1/cdb1
diag/tnslsnr/host/listener

6. なぜPDBごとにログがないのか?

PDBは独立したインスタンスではないため、バックグラウンドプロセスを持ちません。ログ出力の主体であるプロセス(PMON, SMON, DBWなど)はCDBインスタンスに属しており、CDB側で一括管理される設計です。

項目CDBインスタンスPDB
バックグラウンドプロセスありなし
アラートログありなし(CDB側に出力)
トレースファイルありなし

7. よくある誤解と注意点

誤解正しい理解
PDBの中にもalertログがあるはずPDB操作ログはCDBのアラートログに出力される
各PDBが独自にトレースを出力すると思っていたトレースはCDBインスタンスのプロセスによって生成される
PDB障害時はPDBディレクトリを見に行くべきCDBのtrace/alert_cdb1.logなどを確認する

まとめ

項目内容
ADRの役割ログ・障害・インシデントの一元管理
ログの保存場所CDBインスタンス単位(PDBには独立ログなし)
ログの確認手段adrcitailコマンドでCDBインスタンスのログを参照
PDBでの操作や障害の記録先CDBインスタンスのアラートログに一元出力される


[参考]
4 CDBの作成および構成

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

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

コメント

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