オラクルデータベースでトラブルが発生した際のログ確認と対応ガイド

Oracle Master Silver

概要

オラクルデータベースのトラブル発生時には、複数のログを確認して原因を特定し、適切な対応を取ることが重要です。本記事では、主要なログの種類や保存場所、よく見られるエラーメッセージと対処方法を詳しく解説します。


1. アラートログ (Alert Log)

アラートログは、データベース内の重大なイベントを記録するファイルです。エラーの発生やシステムの異常が生じた場合、まずアラートログを確認することから始めましょう。

保存場所

  • デフォルト:$ORACLE_BASE/diag/rdbms/データベース名/インスタンス名/trace
  • ファイル名:alert_データベース名.log

代表的なエラーメッセージと対処法

  • エラー例1: ORA-00600 (内部エラー)

    Tue Nov 7 12:35:01 2023 ORA-00600: internal error code, arguments: [kghfrf_free_1], [], [], [], [], [], [], []

    解説
    ORA-00600はOracle内部のエラーで、原因は多岐にわたります。エラーコードに含まれる引数から、サポートにエスカレーションする際に役立つ情報を得られます。
    対処法
    • Oracleサポートの「ORA-600ツール」を使用してエラー内容を分析します。
    • アラートログやトレースファイルで該当のプロセスやSQL文を確認し、原因を特定します。
  • エラー例2: ORA-04031 (メモリ不足)

    Wed Nov 8 09:12:33 2023 ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","unknown object","sga heap(1,0)","kkscs")

    解説
    メモリ管理領域 (shared pool) の割り当てができない場合に発生します。メモリ設定が不足していることが原因です。
    対処法
    • ALTER SYSTEM FLUSH SHARED_POOL;コマンドでメモリを解放します。
    • SGAパラメータの調整やメモリ拡張を検討します。

2. トレースファイル (Trace File)

トレースファイルには、特定のセッションやプロセスに関連する詳細なエラーメッセージが記録されます。アラートログに記載されたエラーの詳細を深掘りするために利用します。

保存場所

  • デフォルト:$ORACLE_BASE/diag/rdbms/データベース名/インスタンス名/trace

代表的なエラーメッセージと対処法

  • エラー例1: SQL実行エラー

    *** 2023-11-07 12:36:03.456 ORA-00600: internal error code, arguments: [kghfrf_free_1], [], [], [], [], [], [], [] Current SQL statement for this session: SELECT * FROM employees WHERE employee_id = 100

    対処法
    • エラーメッセージに含まれるSQL文を確認し、問題の発生タイミングやSQL文に誤りがないかチェックします。
    • 必要に応じて、インデックスの再構築やSQLのチューニングを検討します。
  • エラー例2: ORA-07445 (プロセス関連エラー)

    *** 2023-11-08 15:05:22.789 ORA-07445: exception encountered: core dump [kghalf()+84]

    解説
    Oracleが特定のプロセスで予期せぬ例外に遭遇した場合に発生するエラーです。
    対処法
    • トレースファイルを参照し、エラー発生箇所(関数名、メモリアドレス)を確認します。
    • Oracleサポートの指示に従い、必要に応じてパッチ適用を検討します。

3. 自動診断リポジトリ (Automatic Diagnostic Repository: ADR)

ADRは、オラクル11g以降で導入されたエラーログやトレースファイルの一元管理機能です。adrciコマンドで各種情報を整理して表示できます。

保存場所

  • デフォルト:$ORACLE_BASE/diag/rdbms/データベース名/インスタンス名

代表的なエラーメッセージと対処法

  • ADRの出力例

    adrci> show incident -last 5 INCIDENT_ID PROBLEM_KEY CREATE_TIME 1 ORA 600 [kghfrf_free_1] 2023-11-07 12:36:03 2 ORA 4031 [sga heap(1,0)] 2023-11-08 15:05:22

    対処法
    • show incidentコマンドを活用し、インシデント一覧からエラー内容を確認します。
    • 必要に応じて、詳細なトレースを追い、問題解決に取り組みます。
  • リカバリ関連のADRエラー例

    adrci> show alert -tail 50 2023-11-08 18:02:10.123000 +00:00 ORA-01555: snapshot too old: rollback segment number 9 with name "_SYSSMU9$" too small

    解説
    スナップショットが古くなりすぎたことにより、データの一貫性が損なわれる場合に発生します。対処法
    • UNDOテーブルスペースの設定を見直し、サイズを増やすことで問題解消を図ります。

4. リスナーログ (Listener Log)

リスナーログには、クライアント接続やエラーが記録されています。接続関連のトラブル発生時には、リスナーログを確認することで原因特定に役立ちます。

保存場所

  • デフォルト:$ORACLE_BASE/diag/tnslsnr/ホスト名/リスナー名/trace
  • ファイル名:listener.log

代表的なエラーメッセージと対処法

  • エラー例1: TNS-12541 (リスナーの不在)

    07-NOV-2023 12:40:12 * (CONNECT_DATA=(SERVICE_NAME=orcl)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=1521)) * establish * orcl * 12541 TNS-12541: TNS:no listener

    対処法
    • lsnrctl statusでリスナーが起動しているか確認します。
    • リスナーを再起動し、設定を確認することで解決できる場合があります。
  • エラー例2: TNS-12514 (サービス名不明)

    08-NOV-2023 13:02:00 * (CONNECT_DATA=(SERVICE_NAME=orcl)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.15)(PORT=1521)) * establish * orcl * 12514 TNS-12514: TNS:listener does not currently know of service requested in connect descriptor

    対処法
    • リスナー設定ファイル(listener.ora)とデータベースのサービス名を再確認します。

5. オペレーティングシステムログ

オラクルがシステム資源(CPU、メモリ、ディスク)関連の問題でエラーを起こしている場合、OSログを確認することで原因の特定が可能です。

保存場所

  • Linuxでは「/var/log/messages」や「/var/log/syslog

代表的なエラーメッセージと対処法

  • エラー例1: ディスクエラー

    Nov 7 12:45:22 server-name kernel: [12345.678901] EXT4-fs error (device sda1): ext4_find_entry:1452: inode #1234567: comm oracle: reading directory lblock 0

    対処法
    • ディスクの使用状況を確認し、不要ファイルの削除やディスク容量の拡張を検討します。
    • ハードウェアの障害が疑われる場合は、システム管理者に相談します。

まとめ

各ログの保存場所、代表的なエラーメッセージ、原因の解説と対処法を把握しておくことは、迅速なトラブルシューティングの鍵です。まずはアラートログを確認し、さらに必要に応じてトレースファイル、ADR、リスナーログなどの情報を参照することで、効率的に問題を解決しましょう。

[参考]
データベース・エラー・メッセージ

コメント

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