Oracle ADR(自動診断リポジトリ)のログ管理完全ガイド【adrciによるクリーンアップ・自動化まで解説】

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

Oracle Databaseでは、障害時のトラブルシュートや診断に役立つログが ADR(Automatic Diagnostic Repository) に自動的に出力されます。
しかし、これらのログは自動で無制限に蓄積されるわけではないため、定期的な削除(パージ)や保持期間の設定が必要です。

本記事では、Oracleの運用管理において不可欠な ADRのログ管理方法(確認・削除・保持設定・自動化) を、実行可能な形で網羅的に解説します。

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

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


✅ 1. ADRとは?概要と構成ディレクトリ

ADRは、Oracleによって自動生成される診断情報を格納するリポジトリです。以下のような構造になっています:

$ORACLE_BASE/diag/rdbms/<DB_UNIQUE_NAME>/<SID>/
├── alert/ # アラートログ
├── trace/ # トレースファイル(.trc, .trm)
├── incident/ # インシデントレポート
├── cdump/ # コアダンプ(バイナリ)
├── hm/ # ヘルスモニター診断結果
├── その他(metadata, log, stageなど)

ADRはOracleインスタンスの起動と同時に自動的に作成され、障害時のログ収集・分析にも活用されます。


✅ 2. ログ管理ツール adrci の起動

Oracleでは adrci(ADR Command Interpreter)を使ってログの確認・削除ができます。

$ adrci

起動すると、以下のようなプロンプトが表示されます:

ADRCI: Release 19.0.0.0.0 - Production

ADR base = "/u01/app/oracle"
adrci>

✅ 3. 対象ADRホームの確認と設定

◾ ADRホームパスの確認

adrci> show homepath

出力例:

diag/rdbms/mydb/mydb
diag/tnslsnr/host01/listener

複数表示される場合は、目的のホームを選びます。

◾ ADRホームパスの設定

adrci> set homepath diag/rdbms/mydb/mydb

この設定以降の操作は、指定されたホームのログに対して行われます。


✅ 4. ログの削除(purge)の使い方

purge コマンドを使用すると、指定した分数(minutes)より古いログファイルを削除できます。

◾ -age の単位は「分(minutes)」

保持日数-age に指定する値
1日1440分
7日10080分
30日43200分

◾ -type に指定可能なログ種別

オプション内容
ALERTアラートログ(alert.log
TRACEトレースファイル(.trc, .trm
INCIDENTインシデントファイル(障害イベント詳細)
CDUMPコアダンプファイル
HMヘルスモニターによる診断出力
UTSCDMPUTSによるダンプ(OSレベル)

◾ 使用例:7日以上経過した各種ログを削除

adrci> purge -age 10080 -type ALERT
adrci> purge -age 10080 -type TRACE
adrci> purge -age 10080 -type INCIDENT
adrci> purge -age 10080 -type CDUMP
adrci> purge -age 10080 -type HM
adrci> purge -age 10080 -type UTSCDMP

◾ 一括で全タイプを削除する場合

adrci> purge -age 10080

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

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


✅ 5. ログの保持期間を設定する(自動削除)

ログを長期間放置せず自動で削除したい場合は、保持ポリシーを設定します。

adrci> set control (SHORTP_POLICY = 43200)    -- 短期ポリシー:30日間
adrci> set control (LONGP_POLICY = 525600) -- 長期ポリシー:365日間

※ 単位は「分(minutes)

設定内容を確認するには:

adrci> show control

✅ 6. ログ削除処理の自動化(cron+スクリプト)

◾ スクリプト例 /home/oracle/scripts/cleanup_adr.sh

#!/bin/bash
source ~/.bash_profile

adrci exec="set homepath diag/rdbms/mydb/mydb; purge -age 10080 -type ALERT"
adrci exec="set homepath diag/rdbms/mydb/mydb; purge -age 10080 -type TRACE"
adrci exec="set homepath diag/rdbms/mydb/mydb; purge -age 10080 -type INCIDENT"
adrci exec="set homepath diag/rdbms/mydb/mydb; purge -age 10080 -type CDUMP"
adrci exec="set homepath diag/rdbms/mydb/mydb; purge -age 10080 -type HM"
adrci exec="set homepath diag/rdbms/mydb/mydb; purge -age 10080 -type UTSCDMP"

◾ 実行権限付与

chmod +x /home/oracle/scripts/cleanup_adr.sh

◾ cron登録(毎週日曜 2時実行)

0 2 * * 0 /home/oracle/scripts/cleanup_adr.sh >> /home/oracle/scripts/cleanup_adr.log 2>&1

✅ 7. 注意点と補足情報

  • purge コマンドで削除されたログは元に戻せません
  • 本番環境では即時実行前に show alert -tailshow incident で内容確認が推奨されます。
  • リスナーのログも set homepath diag/tnslsnr/... を指定することで管理できます。

✅ まとめ:実務向けの操作早見表

操作内容コマンド例
ADRホーム一覧確認show homepath
ADRホーム指定set homepath diag/rdbms/mydb/mydb
アラートログ削除purge -age 10080 -type ALERT
一括削除purge -age 10080
保持ポリシー設定set control (SHORTP_POLICY = 43200)
自動化cron+スクリプトで週次実行


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

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

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

コメント

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