Oracle運用の基本「ログ」を理解しよう:Oracleトラブル対策の基礎知識(1)(3/3 ページ)
本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。
障害が発生した瞬間の状況を記録するトレースファイル
トレースファイルは、エラーなどの発生状況をより詳細に記録したファイルです。
Oracleのプロセスがエラーを検知もしくは異常終了した際に、プロセスがその発生した状況を詳細に記録したトレースファイルを生成し、障害の原因を特定するための有益な情報を出力します。
例えば、Windows環境上でサーバプロセスが異常終了した場合には、初期化パラメータのuser_dump_destで指定されたディレクトリに、以下のような名称のトレースファイルが生成されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
バックグラウンドプロセスのトレースファイルは、background_dump_destで指定されたディレクトリに出力されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このようにトレースファイルには各プロセス名が含まれるので、ファイル名からどのプロセスのトレースであるかを判断できます。
トレースファイルには、エラーが発生した際だけでなく、SQL_TRACEなどの診断イベントを設定した場合に出力される情報についても記録されます。診断イベントを使用した場合でも同様です。
なお、トレースファイルは各プロセスと1対1で対応しています。プロセス稼働中に対応するファイルを移動したり削除すると、その操作以降の情報が出力されなくなりますので、注意が必要です。
・トレースファイルは最大ファイルサイズを指定できる
アラート・ログのファイルサイズは制限することはできませんが、トレースファイルは初期化パラメータの「MAX_DUMP_FILE_SIZE」で最大サイズを制限することが可能です。
しかし、ディスクの空き領域に問題がない限り、トレースファイルのサイズに制限をかけることはお勧めできません。サイズ制限を設定することにより重要な情報が出力されない恐れがあり、そのため、エラー発生時の情報が欠落して、原因追求できなくなってしまう可能性があるからです。
トレースファイルの内容については、トレースの出力対象となるプロセスや出力のトリガにより異なりますが、通常以下の基本情報をヘッダに出力します。
-トレースファイル名
-トレースファイルが作成されたタイムスタンプ
-OSとそのバージョン情報
-Oracleのバージョンとインストールされているオプション
-インスタンス名
-プロセスIDなど
Dump file e:\oracle\admin\db102as\udump\db102as_ora_5740.trc Thu Mar 27 09:39:04 2008 ORACLE V10.2.0.1.0 - Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Windows XP Version V5.1 Service Pack 2 CPU : 2 - type 586 Process Affinity : 0x00000000 Memory (Avail/Total): Ph:113M/1014M, Ph+PgF:953M/2441M, VA:1563M/2047M Instance name: db102as Redo thread mounted by this instance: 1 Oracle process number: 19 Windows thread id: 5740, image: ORACLE.EXE (SHAD)
アラート・ログでも起動時にOSとそのバージョン情報などが出力されますが、トレースファイルでも同様の情報が出力されるため、トレース情報を確認する場合はわざわざアラート・ログの情報を見直す必要はありません。
なお、ヘッダ以下に出力される情報については、そのトレースが出力されるトリガとなる処理によって変化しますが、内部エラーなどの理由でトレースファイルが出力される場合には、以下の情報も併せて出力されます。
- エラーコード
- エラーが発生した際に実行していたSQL(Current SQL)
- スタックトレース
*** 2008-06-10 13:53:56.218 ksedmp: internal or fatal error ORA-00600: 内部エラー・コード、引数: [kkfi.qbcvfr],[1],[],[],[],[],[],[] Current SQL statement for this session: create or replace view v2 as select v1.rowid row_id, v1.sc from v1 ----- Call Stack Trace ----- calling call entry argument values in hex location type point (? means dubious value) -------------------- -------- -------------------- ---------------------------- _ksedst+38 CALLrel _ksedst1+0 0 1 _ksedmp+898 CALLrel _ksedst+0 0 _ksfdmp+14 CALLrel _ksedmp+0 3 _kgerinv+140 CALLreg 00000000 98ACE90 3 _kgeasnmierr+19 CALLrel _kgerinv+0 98ACE90 8590020 3692300 1 BFCC114 _kkfiqs+561 CALLrel _kgeasnmierr+0 98ACE90 8590020 3692300 1 0 1 0 _kkfiis1+59 CALLrel _kkfiqs+0 4D8D8EC 4D864C4 4D8744C BFCC1E4 _kkfiis+185 CALLrel _kkfiis1+0 4D87BE4 4D8744C BFCC1E4 _opixmf+48 CALLreg 00000000 4D87BE4 BFCC1E4 _opixmf+184 CALLrel _opixmf+0 4D8D8EC 173C3E0 BFCC1E4 _kkfiGetCand+45 CALLrel _opixmf+0 4D8E000 173C3E0 BFCC1E4 _opitca+1226 CALLrel _kkfiGetCand+0 4D8E000 _kksLoadChild+5750 CALLrel _opitca+0 85AA794 4D8E538 _kkslod+98 CALLrel _kksLoadChild+0 98ACE90 4D8EF84 BFCD3C4 _kglobpc+446 CALLreg 00000000 98ACE90 4D8EF84 BFCD3C4 : :
・障害発生時のクエリ内容の確認
エラー発生時のトレースファイルについては、問題発生時のSQL文が確認できるので、検証環境で同様のSQL文を実行し、再現テストを実施する場合の情報としても役立ちます。
・メモリダンプの情報の解析はサポート側で
スタックトレースは、プロセスがクラッシュする前にそのプロセスで呼び出された関数をスタック順に出力したものです。これらの情報については、オラクルのサポートで解析調査を行うために使用されるものです。詳細な内容は一般公開されておらず、この内容をユーザーサイドで解析することはできません。
・複数の内部エラー発生時に問題にアタリを付ける
内部エラーを意味するORA-600などが複数発生した場合、各ORA-600の引数および出力されているスタックトレースを確認します。SQL文が異なる場合でも、引数とスタックの内容が似ている場合には、同様の原因に起因して発生している可能性が高いと判断できます。
・公開情報を参照して解決する
オラクルが提供しているOracle Internet Support Center(通称:Oisc)やMetalinkでは、既存の不具合情報などを公開しています。これらの情報を参照するには、別途サポート契約が必要ですが、出力されているスタック情報を基に、該当しているかどうかの判断のアナウンスを行っている場合がありますので、自己解決の大きな手助けとなります。
データベースの運用管理では、これらのファイルの監視は必須の作業です。これから新たにデータベースの運用管理をする方は、本稿を日々の業務に役立ててください。
今回は主にOracle Database 10gでのログ情報を中心に紹介しました。現行の最新バージョンである11gでは、XMLベースでログ情報を取得できるようになっています。次回は11gのAutomatic Diagnostic Repository(ADR)について解説していきます。
Copyright © ITmedia, Inc. All Rights Reserved.