Database Support Blog

Database Support Blog>アラートログを確認する上でおさえておきたい3つのポイント

  • Oracle Database
2015.09.07

アラートログを確認する上でおさえておきたい3つのポイント

アラートログを確認する3つのポイント

弊社のサポートセンターでは年間1万件ほどOracle製品に関するお問い合わせをいただいており、そのうちの約半数がデータベースで発生したトラブルに関するものです。

Oracle Databaseの運用中に何かトラブルが発生した場合、調査はアラートログを確認するところから始まります。アラートログからはデータベースに関する様々な情報が出力されるため、調査において最も重要なファイルの一つです。この他に、エラー発生時の詳細な情報が出力されているトレースファイルや、インシデントファイルもトラブル調査に必要不可欠であり、サポートセンターにお問い合わせをいただく際にはこれらのファイルを送っていただきます。

今回はアラートログにどのような出力があるのか、また、どのような情報がトラブル調査に使われているのかを解説していきます。

アラートログの出力先

アラートログの出力先は、Oracle Databaseのバージョンにより異なります。

・10gR2 以前
 $ORACLE_BASE/admin/DB/bdump/alert_SID.log

・11gR1 以降
 $ADR_BASE/diag/rdbms/DB/SID/trace/alert_SID.log

 ※ADR_BASE は初期化パラメータのDIAGNOSTIC_DESTで指定されているディレクトリです。

11gR1以降ではtraceディレクトリと同じ階層にalertというディレクトリもあり、こちらはXML形式のアラートログファイルが格納されています。テキスト形式でもXML形式でも出力されている内容は同じですが、traceディレクトリ配下に出力されているテキスト形式の方が参照に適しています。

アラートログの出力情報

アラートログに含まれる情報については、「Oracle Database 管理者ガイド」に以下のように記載されています。

・発生したすべての内部エラー(ORA-00600)、ブロック破損エラー(ORA-01578)
 およびデッドロック・エラー(ORA-00060)
・たとえば、CREATE/ALTER/DROP文、STARTUP/SHUTDOWN文、ARCHIVELOG文などの管理操作
・共有サーバーとディスパッチャ・プロセスの機能に関係するメッセージとエラー
・マテリアライズド・ビューの自動リフレッシュ中に発生したエラー
・データベースとインスタンスの起動時点でデフォルト以外の値があったすべての初期化パラメータの値

今回は、Oracle Databaseの運用中にエラーが発生した場合に参照するエラー情報、管理操作、起動時の初期化パラメータの値に関する出力内容を順にご紹介します。

【Point 1】エラー情報を確認する

データベースでエラーが発生した時には、アラートログにその情報が出力されます。ブロック障害を検知したことを示す「ORA-01578」が発生したケースでは以下のように出力されます。

Wed Feb 04 20:09:29 2015
Corrupt Block Found
CONT = 3, TSN = 4, TSNAME = TESTSP
RFN = 11, BLK = 131, RDBA = 46137475
OBJN = 91894, OBJD = 91894, OBJECT = EMP_T, SUBOBJECT =
SEGMENT OWNER = TESTUSER, SEGMENT TYPE = Table Segment
Errors in file /u01/app/oracle/diag/rdbms/cdb122/cdb122/trace/cdb122_ora_3314.trc (incident=17265) (PDBNAME=PDB122):
ORA-01578: ORACLE data block corrupted (file # 11, block # 131)
ORA-01110: data file 11: '/u01/app/oracle/oradata/CDB122/0D02D8B8B008551AE053331BA8C0B198/datafile/o1_mf_testsp_bf18xro4_.dbf'
Incident details in: /u01/app/oracle/diag/rdbms/cdb122/cdb122/incident/incdir_17265/cdb122_ora_3314_i17265.trc

この出力情報から以下のことが把握できます。

  • 2015年2月4日 20時9分29秒 にブロック破損(ORA-01578)を検知
  • プラガブル・データベース名はPDB122
  • TESTSP表領域にあるTESTUSERユーザが保持しているEMP_Tという表
  • ブロック破損はファイル番号11のブロック番号31で発生
  • ファイル番号11番は「o1_mf_testsp_bf18xro4_.dbf」というファイル
  • エラーを受けたプロセスの情報は「cdb122_ora_3314.trc」というトレース・ファイルに出力
  • エラーの詳細情報は「cdb122_ora_3314_i17265.trc」というインシデント・ファイルに出力


このように、アラートログからエラーが発生した時間や、エラーの詳細情報が書き込まれたファイル名がわかります。なお、インシデント・ファイルは全てのエラーで出力されるわけではなく、V$DIAG_CRITICAL_ERRORビューでクリティカルなエラーと定義されているエラーや、内部エラーがデータベースで発生した場合に出力されます。

【Point 2】管理操作を確認する

エラー調査を行う際には、発生したエラーだけでなく、エラー発生前にデータベースの構成が変更されていないかも確認します。

アラートログにはデータベースへの管理操作も実行したSQL文とともに出力されます。表領域の追加やリサイズ、初期化パラメータを変更した場合の出力例は以下の通りです。 タイムスタンプも出力されているので、いつデータベースに対して変更が行われたのかを確認することができます。 エラー発生前にALTER SYSTEM 文などがアラートログに確認できた場合には、パラメータの変更がエラーの原因になっていないかも考慮して調査します。

Sat Feb 07 12:35:53 2015
create tablespace TEST_SPACE datafile size 5m autoextend on
Completed: create tablespace TEST_SPACE datafile size 5m autoextend on
Sat Feb 07 12:38:40 2015
alter database datafile
'/u01/app/oracle/oradata/CDB122/0D02D8B8B008551AE053331BA8C0B198/datafile/o1_mf_test_spa_bfc20s53_.dbf'
resize 8m
Sat Feb 07 13:38:51 2015
Resize operation completed for file# 12, old size 5120K, new size 8192K
Completed: alter database datafile
'/u01/app/oracle/oradata/CDB122/0D02D8B8B008551AE053331BA8C0B198/datafile/o1_mf_test_spa_bfc20s53_.dbf'
resize 8m
Sat Feb 07 13:39:08 2015
ALTER SYSTEM SET processes=500 SCOPE=SPFILE;


管理操作が失敗した場合にも、失敗したコマンドがエラーとともに出力されます。例えば、以下はSMALLタイプの表領域に対しては許可されていない、ALTER TABLESPACE文でRESIZEを行った場合の出力です。

Sat Feb 07 13:37:40 2015
alter tablespace test_space resize 8m
ORA-32773 signalled during: alter tablespace test_space resize 8m...


【Point 3】データベース起動時の初期化パラメータを確認する

特定のパラメータ設定が原因で、データベースにトラブルが発生する場合もあります。そのため、設定されている初期化パラメータの確認は非常に重要です。データベースの起動時に初期化パラメータの情報(デフォルト値以外)がSystem parameters with non-default values の後に出力されます。

Wed Mar 25 11:36:52 2015
Starting ORACLE instance (normal) (OS id: 2540)

ORACLE_HOME = /u01/app/oracle/product/12.1.0.2/dbhome_1
System name: Linux
Node name: host01
Release: 3.8.13-44.1.1.el6uek.x86_64
Version: #2 SMP Wed Sep 10 06:10:25 PDT 2014
Machine: x86_64
Using parameter settings in server-side spfile /u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/spfilecdb122.ora
System parameters with non-default values:
processes = 500
memory_target = 796M
control_files = "/u01/app/oracle/oradata/CDB122/controlfile/o1_mf_bct08f8q_.ctl"
control_files = "/u01/app/oracle/fast_recovery_area/CDB122/controlfile/o1_mf_bct08gjm_.ctl"
db_block_size = 8192
compatible = "12.1.0.2.0"
db_create_file_dest = "/u01/app/oracle/oradata"
db_recovery_file_dest = "/u01/app/oracle/fast_recovery_area"
db_recovery_file_dest_size= 4560M
undo_tablespace = "UNDOTBS1"

SQL*Plus から「SQL> show parameter」を実行することで、現在有効なパラメータを確認することは可能です。しかし、過去に設定されていたパラメータ情報はアラートログから確認する必要があります。以前は発生していなかったエラーが発生するようになった場合は、正常に動作をしていた時にどのようなパラメータが設定されていたか、過去のアラートログから確認します。

【補足】その他の確認ポイント

今回ご紹介したアラートログの出力内容の他にも、ログスイッチの回数が急激に増えていないか、見慣れないメッセージが出力されていないかなど、確認するポイントはいくつもあります。しかし、これらに気付くためには日頃からアラートログを確認し、データベースが正常稼働している時の出力を知っておく必要があります。

データベースの利用に問題が発生する数日前から、アラートログに警告やエラーが出力されていたといったケースはよくあることです。正常時の出力を把握した上でアラートログを確認すると「いつもと違う出力」に気付くことができ、問題を未然に防ぐことが可能になります。ぜひ、一度ご利用環境のアラートログをじっくり眺めてみてください。

執筆者情報

大野 高志

サービス事業部 サポートセンター

2007年にアシスト入社後、Oracle Databaseのサポート業務に従事。現在はサポート業務の傍ら、未解決のトラブルを一つでも多く減らせるよう、サポートセンターに蓄積されている調査のノウハウを社内外に伝える活動を行っている。

関連している記事

  • Oracle Database
2016.12.09

【Oracle Database】2016年にサポートにお問い合わせをいただいたORAエラー TOP5

2016年にアシストのサポートセンターにお問い合わせいただいたORAエラーのTOP5をご紹介します。

  • Oracle Database
2016.11.16

【Oracle Database】パフォーマンスダウンの原因追求に必要な情報取得サンプルスクリプト

パフォーマンスダウンやCPU/メモリ負荷高騰時には、セッション/プロセス単位で情報を確認する必要があります。原因追求に必要な情報を取得できるサンプルスクリプトを提供します。

  • Oracle Database
2016.10.27

【Oracle Database】うるう秒の対応

Oracle Databaseでのうるう秒(閏秒)の対応方法について解説します。2017年元旦にトラブルとならないよう、準備しましょう。

アシストサポートセンターのご紹介 Oracle Database研修

ページの先頭へ戻る