バックグラウンドプロセスのあれこれ

データベースを裏方的な役割を担っているバックグラウンドプロセス。
簡単に言うと、SGA 内のバッファ領域とデータファイルや REDO ログファイル
などの I/O を管理している。

プロセスは多数存在するが、OS や Oracle のバージョン、使用している
オプション製品によって内容は異なる。例えば、ASM を使用している場合や、
RAC の場合は固有プロセスがあるため数が増える。


この中には、常時起動していなければならない必須プロセスもあれば、
必要に応じて Oracle が動的に起動するものもある。

命名規則は ora_<プロセス名>_<インスタンス名> のようになっていて、
以下のように ps コマンドで参照できる。

$ ps -ef | grep ora
$ ps -ef | grep <インスタンス名>

実行すると、沢山プロセスが出力されるので
見慣れていないとこれだけで抵抗感を覚えるかも知れないが、
まずは、必須プロセスは何か?その役割は何か?は押さえておきたいところ。

 

必須プロセスとその概要

ARCH (アーカイバ)

REDO ログファイルをアーカイブログファイルへコピーする。
ARCn の n に数字が入り、複数起動する場合 arc0、arc1・・・ となる。

ARCHIVELOGモード運用時、オンラインREDOログファイルが満杯になり、ログスイッチ
が発生すると、これまで使用していた直前のREDOログファイルの内容をコピーして
アーカイブREDOログファイルを作成する。
 

CKPT (チェックポイント)

メモリバッファとファイルの同期を取り、その時点のデータの整合性を保証する。
 

DBRM (リソースプランマネージャ)

リソースプランのタスクを管理する。(※11g以降)
 

DBWR (データベースライタ)

SGA のデータベースバッファキャッシュの内容をデータファイルに書き出す。
DBWn の n に数字が入り、複数起動する場合 dbw0、dbw1・・・ となる。
会話では デービーライタ と言ったりする。

変更済みのブロックを、データベースバッファキャッシュから
データファイルへ書き出す。活躍のタイミングは以下の通り。

・使用済みバッファ数がしきい値に達した
・プロセスが要求する数のバッファが確保できない
・タイムアウト
・チェックポイント

 

LGWR (ログライタ)

SGA の REDO ログバッファの内容を REDO ログファイルに書き出す。
活躍のタイミングは以下の通り。

・REDOログバッファ使用量が1/3を超えた
・タイムアウト(3秒おき)
・DBWnが書き込みを行う前
・COMMIT時

 

MMAN (メモリマネージャ)

SGA にあるコンポーネントのメモリサイズを管理する。(※10g以降)
 

PMON (プロセスモニタ)

他プロセスの回復やリソース開放を行う。
個人的に会話では ピーモン と言ったりする。
活躍のタイミングは以下の通り。

・ユーザプロセス障害後、プロセス回復
・トランザクションロールバック、ロック等のリソース開放
・ディスパッチャ再起動

 

PSP0 (プロセス Spawner)

起動やクリーンアップなど、バックグラウンドプロセスを管理する。(※10g以降)
(10gR2 以前は PMON が起動していた)
 

SMON (システムモニタ)

インスタンス回復、リカバリを行う。
活躍のタイミングは以下の通り。

・インスタンス起動時にインスタンス回復
・セグメントのクリーンアップ
・データファイルの空き領域結合(エクステント結合)

 

VKTM (バーチャルキーパーオブタイム)

時間の仮想キーパー。(※11g以降)
 

どのプロセスを監視する?

「必須プロセスが落ちている=障害」であるため、これらは ps コマンドを使って
稼動監視にも使われている。監視対象プロセスを限定しなければならない場合、
どれを監視すべきか?個人的には、他プロセスの面倒を見ている pmon を推している。

関連記事

人気ブログランキングへ

このページの先頭へ