連載
» 2008年06月30日 00時00分 UPDATE

Oracleトラブル対策の基礎知識(1):Oracle運用の基本「ログ」を理解しよう (1/3)

本連載では、Oracle Database運用の鍵となるトラブル対処法について紹介していきます。第1回、第2回では情報収集の要となるログについて見ていきます。ログの出力情報は10gと11gとでは大きく異なる点がありますので、それぞれについても確認しておきましょう。

[馬場昌弘,株式会社コーソル]

 ご存じの方も多いかと思いますが、Oracle Databaseの代表的なログには、以下の3つが挙げられます。

  • アラート・ログ……データベース個別のイベントとダンプファイル情報など
  • トレースファイル……エラー発生時の情報およびメモリダンプ
  • リスナー・ログ……クライアントからの接続要求状況

 今回は、Oracle Database 10g R2までのアラート・ログとトレースファイルに焦点を当て、出力される情報とその内容について解説していきます。

 第2回では、現行の最新バージョンであるOracle Database 11gで大幅に変更となったログの管理構造である「Automatic Diagnostic Repository(ADR)」について解説していきます。

アラート・ログには稼働中のすべての状態が記録されている

 アラート・ログ とはデータベースのログです。データベースが稼働する間、その動作状態が逐次記録されていきます。

 一般的にデータベースの運用に重大な障害が発生した場合、ほとんどの診断作業はアラート・ログの確認から始まります。ここでエラーなどが確認できる場合には、付随するトレースファイルについても併せて確認する必要があります。

 ここで、アラート・ログについて、改めて確認しておきましょう。

 アラート・ログ は、インスタンスごとに、

alert_<ORACLE_SID>.log

というファイル名で作成され、初期化パラメータbackground_dump_destで指定されたディレクトリに出力される追記型のファイルです。

 以下が、アラート・ログに出力される主な内容です。

-Oracleのバージョン
-OS とそのバージョン情報(注)
-インスタンスの起動・停止、そのモード
-起動時にデフォルト以外の値が設定された場合のパラメータ
-バックグラウンドプロセスのPID
-表領域の追加など(物理構成の変更)
-ログスイッチの発生
-エラー番号とそのエラー名、およびその詳細が記録されているトレースファイルの出力情報
注)プラットフォームおよびバージョンによりOS側の情報については出力されない場合があります。

 実際のアラート・ログを見てみましょう。リスト1はアラート・ログのサンプルです。

Thu Jun 12 14:47:07 2008
Starting ORACLE instance (normal)
LICENSE_MAX_SESSION = 0
LICENSE_SESSIONS_WARNING = 0
Picked latch-free SCN scheme 2
Using LOG_ARCHIVE_DEST_10 parameter default value as USE_DB_RECOVERY_FILE_DEST
Autotune of undo retention is turned on.
IMODE=BR
ILAT =18
LICENSE_MAX_USERS = 0
SYS auditing is disabled
ksdpec: called for event 13740 prior to event group initialization
Starting up ORACLE RDBMS Version: 10.2.0.3.0.
System parameters with non-default values:
  _trace_files_public  = TRUE
  processes            = 150
  __shared_pool_size   = 146800640
  __large_pool_size    = 4194304
  __java_pool_size     = 4194304
  __streams_pool_size  = 0
  nls_language         = JAPANESE
  nls_territory        = JAPAN
  sga_target           = 285212672
  control_files        = /home/ora10203/app/oracle/oradata/ora10203/control01.ctl,
                         /home/ora10203/app/oracle/oradata/ora10203/control02.ctl,
                         /home/ora10203/app/oracle/oradata/ora10203/control03.ctl
  db_block_size        = 8192
  __db_cache_size      = 121634816
  compatible           = 10.2.0.3.0
  db_file_multiblock_read_count= 16
  db_recovery_file_dest  = /home/ora10203/app/oracle/flash_recovery_area
  db_recovery_file_dest_size= 2147483648
  undo_management      = AUTO
  undo_tablespace      = UNDOTBS1
  remote_login_passwordfile= EXCLUSIVE
  db_domain            =
  job_queue_processes  = 10
  background_dump_dest = /home/ora10203/app/oracle/admin/ora10203/bdump
  user_dump_dest       = /home/ora10203/app/oracle/admin/ora10203/udump
  core_dump_dest       = /home/ora10203/app/oracle/admin/ora10203/cdump
  audit_file_dest      = /home/ora10203/app/oracle/admin/ora10203/adump
  db_name              = ora10203
  open_cursors         = 300
  pga_aggregate_target = 94371840
  _optimizer_connect_by_cost_based= FALSE
PMON started with pid=2, OS id=24138
PSP0 started with pid=3, OS id=24140
MMAN started with pid=4, OS id=24142
DBW0 started with pid=5, OS id=24144
LGWR started with pid=6, OS id=24146
CKPT started with pid=7, OS id=24148
SMON started with pid=8, OS id=24150
RECO started with pid=9, OS id=24152
CJQ0 started with pid=10, OS id=24154
MMON started with pid=11, OS id=24156
MMNL started with pid=12, OS id=24158
Thu Jun 12 14:47:08 2008
ALTER DATABASE   MOUNT
Thu Jun 12 14:47:12 2008
Setting recovery target incarnation to 1
Thu Jun 12 14:47:12 2008
Successful mount of redo thread 1, with mount id 1439778604
Thu Jun 12 14:47:12 2008
Database mounted in Exclusive Mode
Completed: ALTER DATABASE   MOUNT
Thu Jun 12 14:47:12 2008
ALTER DATABASE OPEN
Thu Jun 12 14:47:12 2008
LGWR: STARTING ARCH PROCESSES
ARC0 started with pid=14, OS id=24162
Thu Jun 12 14:47:12 2008
ARC0: Archival started
ARC1: Archival started
LGWR: STARTING ARCH PROCESSES COMPLETE
ARC1 started with pid=15, OS id=24164
Thu Jun 12 14:47:12 2008
Thread 1 opened at log sequence 201
  Current log# 3 seq# 201 mem# 0: 
                               /home/ora10203/app/oracle/oradata/ora10203/redo03.log
Successful open of redo thread 1
Thu Jun 12 14:47:12 2008
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set
Thu Jun 12 14:47:12 2008
ARC0: Becoming the 'no FAL' ARCH
ARC0: Becoming the 'no SRL' ARCH
Thu Jun 12 14:47:12 2008
SMON: enabling cache recovery
Thu Jun 12 14:47:12 2008
ARC1: Becoming the heartbeat ARCH
Thu Jun 12 14:47:12 2008
Successfully onlined Undo Tablespace 1.
Thu Jun 12 14:47:12 2008
SMON: enabling tx recovery
Thu Jun 12 14:47:12 2008
Database Characterset is JA16EUCTILDE
replication_dependency_tracking turned off (no async multimaster replication found)
Starting background process QMNC
QMNC started with pid=16, OS id=24166
Thu Jun 12 14:47:13 2008
Completed: ALTER DATABASE OPEN
リスト1 Linux環境R10.2.0.3起動時のアラート・ログの例

・初期化パラメータが消えてもアラート・ログがあれば復旧できる

 リスト1を見ると分かるように、アラート・ログについては、起動時の初期化パラメータの情報が出力されるので、もし何らかのトラブルにより初期化パラメータを消失した場合でも、アラート・ログを参照して復旧することが可能です。

・すべてのエラーが出力されるわけではない

 アラート・ログには、クライアント側に返されるすべてのエラーが出力されるわけではない点に注意してください。

 アラート・ログに出力されるエラーは、データベースの運用に影響するエラー(例えば共有プールの不足に起因して発生する「ORA-4031」や領域不足のため発生する「ORA-1653」など)ですが、ユーザーのオペレーションミスや構文ミスで発生する一意制約違反の「ORA-1」、表が存在しない「ORA-942」などのエラーについては出力されません

 このため、クライアントからのSQL文のオペレーションミスにより発生し得るエラーについては、アラート・ログを確認したとしても、詳細な状況を把握することはできません。

 これらのエラーが発生した場合には、アプリケーション側のログから実行されたSQL文を確認するなどして原因を調査する必要があります。

・ASM・RAC環境では出力内容が一部異なる

 シングルインスタンスのアラート・ログの情報については、上記に記述した内容が出力されますが、ASM・RAC環境では出力される情報が一部異なります。次ページでは、ASM・RAC環境でのアラート・ログについて見ていきます。

       1|2|3 次のページへ

Copyright© 2014 ITmedia, Inc. All Rights Reserved.

TechTargetジャパン

Nexus 6と格安SIM、プレゼント!
Loading

ホワイトペーパー(TechTargetジャパン)

注目のテーマ

転職/派遣情報を探す

【転職サーチ】SIer/Web企業/新規事業 スマホ開発で、あなたのキャリアを生かす

「派遣・フリーで働くメリット」とは? 活躍する派遣エンジニアの本音

RSSについて

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

メールマガジン登録

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