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 | ヘルスモニターによる診断出力 |
UTSCDMP | UTSによるダンプ(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 -tailやshow 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+スクリプトで週次実行 |




コメント