Oracle Databaseでエラーが出たらまず何を見るか――トレースファイル/インシデントファイルOracleサポート出張所(4)

本連載は、「Oracle Database」で発生するトラブルをどう解決すればよいのか、データベースの運用管理において、より円滑に業務を進めるために必要なノウハウを紹介します。今回は「Oracle Databaseでエラーが出た場合に見るべきログファイル、トレースファイルとインシデントファイル」について、出力フォーマットと確認できる内容を解説します。

» 2018年11月30日 05時00分 公開
[坂輝彦株式会社アシスト]

連載バックナンバー

 本連載「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点です。それぞれの出力例を挙げましょう。

(1)Oracle Databaseの情報

 「ホスト名」「データベースインスタンス名」「製品バージョン」「ORACLE_HOMEのパス」を確認できます。

「Oracle Databaseの情報」出力例

(2)エラーに関する情報

 「エラーが発生したSQL」「プロセスID」「セッションID」「データベースユーザー名」を確認できます。

「エラーに関する情報」出力例

(3)クライアントの情報

 「ホスト名」「プログラム名」「プロセスID」「プロセスのOSユーザー」を確認できます。

「クライアントの情報」出力例

 アラートログファイルでORA-00600エラーを検知した場合、インシデントファイルの出力内容から、エラーが発生したSQLや当該SQLを実行していたクライアントのホスト名、プログラム名を特定できます。これらの情報から、SQLが失敗したことによるアプリケーションへの影響を確認する必要があります。

 より詳細な原因調査を行うには、同一SQLを実行した場合のエラーの再現性や、SQLが参照しているオブジェクト定義を取得してください。

 今回は、「トレースファイル/インシデントファイルの内容」を紹介しました。次回は、リスナーログについて解説する予定です。

筆者紹介

坂輝彦(さかてるひこ)

株式会社アシスト サービス事業部 サポートセンター。Oracle Database 9iの時代からサポートを行うサポートエンジニア。サポートセンターのノウハウを伝える研修「OracleDatabaseトラブル調査テクニック」の監修、講師を担当。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。