バックグラウンドプロセス (Oracle Database)

出典: フリー百科事典『ウィキペディア(Wikipedia)』

バックグラウンドプロセスとは、データベースであるOracle Databaseのシステムを管理するプロセスである。バックグラウンドで動作する。ファイルシステムグローバル領域の仲介役となる。インスタンスの実行中にメモリーを管理したり、データハードディスクに書き込んだりする。

7つの主要なバックグラウンドプロセス[編集]

主要なバックグラウンドプロセスは以下の7つがある。

  • SMON (システムモニタプロセス)
  • PMON (プロセスモニタプロセス)
  • DBWR (データベースライタプロセス)
  • LGWR (ログライタプロセス)
  • CKPT (チェックポイントプロセス)
  • ARCH (アーカイバプロセス)
  • MMON (マネージャモニタプロセス)

 利用のオプションやバージョンによってはこれ以外のプロセスも存在する。

SMON[編集]

Oracle Databaseのシステムを監視する。インスタンスに障害が発生した後にOracle Databaseをオープンすると、インスタンス回復を行う。

PMON[編集]

障害が発生したプロセスを回復させる。そのプロセスが利用していたリソースを開放する。

DBWR[編集]

メモリの「データベースバッファキャッシュ[1]」上のデータをディスクの「データファイル[2]」に書き込む。データベースバッファキャッシュはシステムグローバル領域の一部である。

Oracle Databaseでは、メモリ上でデータの処理を完了させてからディスクのファイルに書き込む。書き込むデータの順番はLRU(Least Recently Used)というアルゴリズムで決定する。

DBWRを起動する数は、「DB_WRITER_PROCESSES」という初期化パラメータで指定する。DBWRは10つまで起動できる。ほとんどのシステムでは1つ起動すれば十分である。ただし、データを頻繁に変更するなら多く起動するとよい。

DBWRが書き込みをするシステムの状態[編集]

  • バッファ・キャッシュの使用量が設定されたしきい値を超えた。(LOG_CHECKPOINT_TIMEOUT)
  • 設定された時間、DBWRが書き込みをしていない。(LOG_CHECKPOINT_INTERVAL)
  • チェックポイントが発生した。
  • あるプロセスが必要なだけの空きバッファを確保できない。

LGWR[編集]

メモリの「REDOログバッファ[1]」にあるデータの変更履歴をディスクの「REDOログファイル[2]」に書き込む。REDOログバッファもシステムグローバル領域の一部である。

LGWRが書き込みをするシステムの状態[編集]

  • REDOログバッファの空きが3分の1しかない。
  • 3秒間、LGWRが書き込みをしていない。(タイムアウト)
  • DBWRが書き込みを行うとき。
  • 利用者によるデータの変更が確定された。(コミット)

CKPT[編集]

データファイルと「制御ファイル[2]」(システム制御用のファイル)を更新するための「チェックポイント」を発生させる。 チェックポイントが発生したときにDBWRへ信号を送る。DBWRはデータベースバッファキャッシュでの処理をデータファイルに反映させる。管理者はデータベースを停止するときなど、いろいろなタイミングで発生させることができる。

チェックポイントの処理の流れ[編集]

  1. LGWRが書き込みを行う。
  2. DBWRが書き込みを行う。
  3. メモリの内容を制御ファイルに反映させる。
  4. チェックポイントが正常に完了したことを全てのデータファイルと制御ファイルに反映させる。

チェックポイントが発生する条件[編集]

  • REDOログを切り替えるとき。(この切り替えを「ログスイッチ」という)。(9iよりはオンラインREDOログ・ファイルのサイズのうちの90%書き込んだ時)
  • normal(正常終了)かtransaction(トランザクション終了後),immediate(即時停止),でデータベースを停止したとき。ただし、abort(強制終了)では発生しない。
  • 「LOG_CHECKPOINT_INTERVAL」と「LOG_CHECKPOINT_TIMEOUT」という初期化パラメータで設定したしきい値を超えた。
  • 管理者が手動で発生させたとき。(ALTER SYSTEM CHECKPOINT)

ARCH[編集]

REDOログファイルを「アーカイブREDOログファイル[2]」(アーカイブのファイル)にコピーする。REDOログファイルがいっぱいになるか、ログスイッチが発生したときに、書き込みをする。

ARCHを起動する数は、「LOG_ARCHIVE_MAX_PROCESSES」という初期化パラメータに指定する。ARCHが不足しているとLGWRがARCHを自動で起動する。10つまで動作させることができる。

脚注[編集]

  1. ^ a b システムグローバル領域を参照。
  2. ^ a b c d ファイル (Oracle Database)を参照。

関連項目[編集]