検索
連載

気付きにくいREDOログの問題切り分けテクニックOracleパフォーマンス障害の克服(6)(1/3 ページ)

Oracleデータベースの運用管理者は、突発的に直面するパフォーマンス障害にどうやって対処したらよいか。本連載は、非常に複雑なOracleのアーキテクチャに頭を悩ます管理者に向け、短時間で問題を切り分け、対処法を見つけるノウハウを紹介する。対象とするバージョンはOracle8から9iまでを基本とし、10gの情報は随時加えていく。(編集局)

Share
Tweet
LINE
Hatena

 今回から「問題解決に有効な6つのステップ」の4ステップ目である「システム設定項目の確認」に入り、REDOログを取り上げます。REDOログはOracleの障害発生に備えて変更履歴を記録するもので、障害回復に必要なファイルです。Oracleにパフォーマンス障害が発生した場合、REDOログを原因とする問題を切り分けるためには、「REDOログ書き込み」「ログ・スイッチ」「チェックポイント」の3カ所に着目します。

REDOログの考え方

 Oracleの各インスタンスには、インスタンス障害時にデータベースを回復させるためのログが1つずつ対応付けられています。それがインスタンス単位で用意されているREDOログで、データベースに対して行われたすべての変更情報を格納しています。

 REDOログは2つ以上のグループで構成され、各グループは1つ以上のメンバー(REDOログ・ファイル)を持ちます(REDOログ・ファイルは最低1つでも運用できますが、複数のファイルで多重化することが推奨されています)。REDOログ・ファイルは設定された容量に達すると、使用されていない次のグループのREDOログ・ファイルを使用するように変更され、当初使用されていたREDOログ・ファイルはそのまま残されます。すべてのREDOログ・ファイルを使い切ると、当初のREDOログ・ファイルを上書きする循環方式を使用しています。REDOログはオンラインで使用されるため「オンラインREDOログ」とも呼ばれます。

 循環方式で古いREDOログ・ファイルを上書きするということは、障害発生時に回復できる地点に制約があるということです。そこで、REDOログ・ファイルが切り替わるときに、REDOログ・ファイルを1つ以上のオフライン・アーカイブ先に保存する「アーカイブREDOログ(アーカイブ・ログ)」モードも用意されています。REDOログをアーカイブ・ログに変更するプロセスをアーカイブと呼び、データベースをARCHIVELOGモードで稼働させる必要があります。Oracleが自動的にアーカイブを行う自動アーカイブ・モードとユーザーが任意のタイミングでアーカイブを行う手動アーカイブ・モードの2種類があります。本連載でREDOログと記載した場合は、オンラインREDOログを指します。

REDOログに起因する問題を発見する

 ログに関連したボトルネックを発見しても、それは必要なサーバ・プロセス処理と考えてしまい、Oracleの仕様だとあきらめてしまいがちですが、実際は設定やチューニングで改善できることもあります。

 まず、OracleのREDOログの仕組みを正しく理解し、ボトルネックになっている処理を特定しましょう。筆者がログに問題がありそうだと感じたときに調査する優先項目は

  • REDOログ・バッファとLGWR
  • ログ・スイッチ
  • チェックポイント

の3点です。この基本キーワードに沿って、REDOログに起因するパフォーマンス障害を検討してみましょう。

REDOログ・バッファとLGWR

 ロールバックや障害回復に使用されるREDOログへの記載情報は、SGA内に領域が確保されているREDOログ・バッファ(メモリ)に格納されています。SGAについては連載第5回「SGAに起因するパフォーマンス障害を発見する」を参照してください。REDOログ・バッファはデータベースに対して行った変更処理をすべて保持しますので、それなりのデータ量になります。この情報をREDOログ・ファイルに書き込むのは、LGWRと呼ばれるバックグラウンド・プロセスです。LGWRの動作はパフォーマンスに重要な影響を及ぼします。

ログ・スイッチ

 ログ・スイッチとは、LGWRの書き込み先のREDOログ・ファイルが切り替わる時点のことをいいます。現在アクティブなREDOログ・ファイルへの書き込みを停止し、循環方式によって次の使用可能なREDOログ・ファイルが割り当てられます。ログ・スイッチが発生するときには、REDOログ・ファイルの整合性を成り立たせるため、チェックポイントと呼ばれる処理が伴います。

チェックポイント

 チェックポイントとはデータベース全体の整合性を図る処理です。具体的にはバックグラウンド・プロセスであるCKPTがDBWRに対して処理命令を送り、データベース・バッファ・キャッシュ内の変更済みブロックをデータファイルに書き込みます。さらにすべての制御ファイルとデータファイルのヘッダにあるシステム変更番号(SCN)を更新し、システムが使用している制御ファイル、格納されているデータファイル、REDOログ・ファイルなど、すべてのファイルの整合性を成り立たせます。

REDOログ処理の問題切り分け

 図1にREDOログ処理の動作を示しました。赤字で記載した部分が特に注意したいところです。障害個所の切り分けポイントを確認していきましょう。

図1 REDOログ処理の動作と障害個所の切り分けポイント
図1 REDOログ処理の動作と障害個所の切り分けポイント

次ページへ続く)

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る