本連載は、「Oracle Database」で発生するトラブルをどう解決すればよいのか、データベースの運用管理において、より円滑に業務を進めるために必要なノウハウを紹介します。今回は「Oracle Databaseでエラーが出た場合に見るべきログファイル、トレースファイルとインシデントファイル」について、出力フォーマットと確認できる内容を解説します。
本連載「Oracleサポート出張所」は、「Oracle Database」で発生するトラブルを「どんな方法で」「どのように」解決していくか。長年、筆者がOracle Databaseのサポート業務で培ってきた経験を基に、Oracle Databaseの運用管理をする上で「より円滑に、かつ成長を見据えて業務を推進していく」ために必要なノウハウを紹介します。
前回は、トラブル解決の第一歩となる「アラートログで監視すべき5大キーワード」を解説しました。今回は、エラーが発生したときに出力されるログファイル「トレースファイルとインシデントファイルの内容」についてポイントを解説します。
Oracle Databaseでは、クリティカルなエラー(V$CRITICAL_ERRORで確認可能なORAエラーやORA-00600、ORA-00700)が発生した時、アラートログファイルエラーメッセージが出力されます。バックグラウンドプロセスでエラーが発生した時も同様です。
このため、アラートログファイルを監視すると、エラーを早期に検出できます。
さらに、アラートログファイルへの出力と同時に、トレースファイルとインシデントファイルに該当エラーの詳細が出力されるため、エラー原因の特定や影響範囲の絞り込みにも役立ちます(ファイルの出力先は、連載第1回をご参照ください)。
詳細がトレースファイルとインシデントファイルのどちらに出力されるかは、Oracle Databaseのバージョンやエラーによって異なりますが、出力内容はおおよそ同じです。
今回は、代表的なエラーである「ORA-00600エラー」がインシデントファイルに出力されたケースを基に、確認できる主な内容と出力例を紹介します。
なお、ORA-00600エラーの影響範囲についてご質問をいただくことがよくあります。主な影響としてはSQLの異常終了です。さらにバックグラウンドプロセスで発生した場合は、インスタンス停止まで影響が及ぶ場合もあります。
インシデントファイルから確認できる主な内容は次の3点です。それぞれの出力例を挙げましょう。
「ホスト名」「データベースインスタンス名」「製品バージョン」「ORACLE_HOMEのパス」を確認できます。
「エラーが発生したSQL」「プロセスID」「セッションID」「データベースユーザー名」を確認できます。
「ホスト名」「プログラム名」「プロセスID」「プロセスのOSユーザー」を確認できます。
アラートログファイルでORA-00600エラーを検知した場合、インシデントファイルの出力内容から、エラーが発生したSQLや当該SQLを実行していたクライアントのホスト名、プログラム名を特定できます。これらの情報から、SQLが失敗したことによるアプリケーションへの影響を確認する必要があります。
より詳細な原因調査を行うには、同一SQLを実行した場合のエラーの再現性や、SQLが参照しているオブジェクト定義を取得してください。
今回は、「トレースファイル/インシデントファイルの内容」を紹介しました。次回は、リスナーログについて解説する予定です。
株式会社アシスト サービス事業部 サポートセンター。Oracle Database 9iの時代からサポートを行うサポートエンジニア。サポートセンターのノウハウを伝える研修「OracleDatabaseトラブル調査テクニック」の監修、講師を担当。
Copyright © ITmedia, Inc. All Rights Reserved.