アラートログは oracle の稼働状況・障害の“時系列記録”です。アラートログを素早く読めると、原因切り分けと一次対応の速度が段違いになります。本稿では場所と見方、代表的な確認コマンド、よくあるエラーの読み方、保守までを初心者にも分かる解説つきで整理します。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
アラートログとは?(役割と出力場所)
- 役割:インスタンスの起動/停止、構成変更、バックグラウンド異常、ORA-エラーの要所を記録
- 保存先:ADR(Automatic Diagnostic Repository)配下
$ORACLE_BASE/
└─ diag/
└─ rdbms/
└─ <db_unique_name>/
└─ <instance_name>/
├─ alert/ ← XML形式(log.xml)
└─ trace/ ← テキスト形式:alert_<db_unique_name>.log
ファイル名は多くの環境で
alert_<DB_UNIQUE_NAME>.log(単一構成ではSIDと同じに見える場合あり)。
【oracle 19c】アラートログの場所と構造をすぐ確認
1) OS(Oracle Linux 7.9)で直接見る
# 例:パスをそのまま指定(置き換えてください)
tail -f /u01/app/oracle/diag/rdbms/ORCL/ORCL/trace/alert_ORCL.log
# 直近の ORA- を10行ずつ確認
grep -n "ORA-" /u01/app/oracle/diag/rdbms/ORCL/ORCL/trace/alert_ORCL.log | tail -n 10
ポイント解説
tail -fは追尾表示(リアルタイム監視)。CTRL+Cで停止。grep -n "ORA-"でエラー行を抽出。直前の時間行と併せて前後を読むと変化点が掴めます。
2) SQL*Plusで「場所」を機械的に把握(V$DIAG_INFO)
-- 管理者権限(SYSDBA など)で
COL name FORMAT A20
COL value FORMAT A100
SELECT name, value
FROM v$diag_info
WHERE name IN ('ADR Base','ADR Home','Diag Alert','Diag Trace','Default Trace File')
ORDER BY name;
初心者向け解説
V$DIAG_INFOは診断関連ディレクトリの正確なパスを返します。ADR Base… ADRの基点ADR Home… 当該DBインスタンスの診断ホームDiag Alert… アラートログ(XML)のディレクトリDiag Trace… テキスト版アラートログと各種トレースの置き場Default Trace File… 自セッションのトレースファイル
3) SQLでアラートログ本文を読む(19c:V$DIAG_ALERT_EXT)
12.2以降は
V$DIAG_ALERT_EXTからアラートログ相当を直接検索できます。フィルタや並び替えが容易です。
(出力はXML版ログの内容をテーブル化したもの)
-- 直近24時間のアラートログを時系列で
COL originating_timestamp FORMAT A30
COL message_text FORMAT A100 WORD_WRAPPED
SELECT originating_timestamp, message_text
FROM v$diag_alert_ext
WHERE originating_timestamp > SYSTIMESTAMP - INTERVAL '1' DAY
ORDER BY originating_timestamp;
解説
originating_timestamp… 発生時刻message_text… メッセージ本文(ORA- で始まる行など)
エラーだけ欲しい場合
SELECT originating_timestamp, message_text
FROM v$diag_alert_ext
WHERE message_text LIKE 'ORA-%'
ORDER BY originating_timestamp DESC
FETCH FIRST 50 ROWS ONLY;
4) ADRCIで高度に検索・追尾(公式ユーティリティ)
adrci
ADRCI> show homes
ADRCI> set homepath diag/rdbms/ORCL/ORCL -- 目的のホームを選択
ADRCI> show alert -tail -f -- 追尾表示(CTRL+Cで停止)
フィルタ例(ORA-600系だけ)
ADRCI> show alert -p "MESSAGE_TEXT LIKE '%ORA-600%'" -term
スプール保存
ADRCI> spool /tmp/my_alert.log
ADRCI> show alert -term
ADRCI> spool off
show alertのフィルタや追尾オプションは公式ドキュメントにも明記されています(-p / -tail / -f / -term など)。
よくあるメッセージの読み方と一次対応の勘所
現場では前後のログと直近の変更を必ずセットで確認します。ここでは“読み方の軸”を示します(実施判断は環境・要件に応じて)。
ORA-01555: スナップショットが古すぎます
- 何が起きた? 一貫性読み取り(SELECT)のための過去イメージが UNDO から消えてしまった。
- 読み方の軸:長時間SELECTやバッチ、同時更新の多さ/
UNDO_RETENTIONと表領域サイズの釣り合い - 見るSQL(現状把握)
-- UNDO表領域の情報 SELECT tablespace_name, status, contents FROM dba_tablespaces WHERE contents = 'UNDO'; -- UNDO使用状況(代表例) SELECT name, value FROM v$parameter WHERE name LIKE 'undo%'; - 提案:クエリの分割・不要ソート削減、UNDO表領域サイズの見直し、
UNDO_RETENTIONの整合。影響評価と戻し方を準備してから実施。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
ORA-00060: リソース待機の間にデッドロックが検出されました。
- 何が起きた? 相互待ち(循環待ち)で自動的に一方がロールバック。
- 読み方の軸:該当セッションのトレースファイルに“deadlock graph”。更新順序やインデックス設計の見直し。
- 確認の導線
-- 自セッションのトレースファイル位置(Default Trace File) SELECT value AS default_trace_file FROM v$diag_info WHERE name = 'Default Trace File'; - 提案:更新順序の統一、WHERE句の選択性向上、アプリ側のリトライ実装(指数バックオフなど)。
ORA-00257:アーカイブ・エラーです。
- 何が起きた? FRA(Fast Recovery Area)満杯でアーカイブ生成停止。
- 現状把握SQL
-- FRA使用率 SELECT name, space_limit/1024/1024 AS mb_limit, space_used/1024/1024 AS mb_used, space_reclaimable/1024/1024 AS mb_reclaimable FROM v$recovery_file_dest; -- 内訳(どの種別が使っているか) SELECT file_type, percent_space_used, percent_space_reclaimable FROM v$flash_recovery_area_usage ORDER BY percent_space_used DESC; - 提案:古いアーカイブやバックアップの削除(RMANで)、FRA拡張、アーカイブ抑制(業務・DR要件を満たす範囲で)。運用方針と復旧性のバランスを確認してから。
起動・構成変更メッセージの“流れを掴む”
[起動時の典型]
Starting ORACLE instance
→ Database mounted.
→ Database opened.
[構成変更例]
ALTER SYSTEM SET ...
Tablespace ... added.
Switch logfile ...
読み方のコツ
- “直前の出来事”を探す:起動直後/ログ切替直後/表領域拡張直後にエラーが出ていないか。
- 繰り返し:同じ警告が一定間隔で続いていればリソース不足や設定不整合のサイン。
トレースファイルの出力と管理
- 出力先:
Diag Trace(V$DIAG_INFOで確認) - 関連例:
*_ora_<pid>.trc(プロセス個別)、*_ora_<pid>.trm(メタ) - ADRCIで検索
adrci ADRCI> set homepath diag/rdbms/ORCL/ORCL ADRCI> show tracefile -t "last" -- 直近のトレースを素早く確認 - サイズ管理(自動/手動)
- 自動ポリシー:
SET CONTROL(サイズや保持の方針を設定) - 手動パージ(単位は分):
ADRCI> purge -age 10080 -type ALERT -- 7日より古いアラートログ関連を対象 ADRCI> purge -age 43200 -type TRACE -- 30日より古いトレースを対象 - Linux側でのローテーションを併用する場合は、運用チームの合意と復旧手順を必ず整備。
- 自動ポリシー:
すぐ使える“日々の点検レシピ”
# 1) 直近の重大系(ORA-00600/07445)を確認
adrci exec="set homepath diag/rdbms/ORCL/ORCL; show alert -p \"message_text like '%ORA-600%' or message_text like '%ORA-7445%'\" -term"
# 2) 過去24時間のORA-の件数を概観(SQL)
sqlplus -s / as sysdba <<'SQL'
SET PAGES 100 LINES 200
SELECT TO_CHAR(originating_timestamp, 'YYYY-MM-DD HH24:MI') AS ts,
COUNT(*) AS cnt
FROM v$diag_alert_ext
WHERE message_text LIKE 'ORA-%'
AND originating_timestamp > SYSTIMESTAMP - INTERVAL '1' DAY
GROUP BY TO_CHAR(originating_timestamp, 'YYYY-MM-DD HH24:MI')
ORDER BY ts;
SQL
解説
- ① は致命系エラーの有無を短時間で判断。
- ② は“時間帯偏り”を可視化し、バッチ・ピーク時間の問題を当てにいきます。
まとめ(現場目線の読み方)
- まず「場所」を確実に特定(
V$DIAG_INFO/ ディレクトリ構造)。 - 読む順番は「変化点 → エラー → 周辺ログ」。
- ADRCI/SQL/OS を使い分け、再現可能な手順で共有する。
- 保守は ポリシー(自動)+定期パージ(手動) の組み合わせが安全。
本記事は Oracle Database 19c を対象に解説します(他バージョンは画面や既定値が異なる場合があります)。
[参考]
データベース・エラー・メッセージ
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント