はじめまして。レック・テクノロジー・コンサルティングのエンジニア 伊藤と申します。
今回からOracle Databaseのプロセスについて話をしていきます。
Oracleのプロセスの種類
まず初めにOracle Database(以下、Oracle)が動作する上で必要になるプロセスには次のとおりです。
- ・バックグラウンド・プロセス
- ・サーバー・プロセス
- ・ユーザー・プロセス
バックグラウンド・プロセスとサーバー・プロセスは、「Oracle Database」の回でも簡単に触れられているものです。ここにさらにユーザー・プロセスが加わります。これらのプロセスの関係をいつもの図を使って確認すると次のようになります。
それでは各プロセスについて順に説明していきましょう。
バックグラウンド・プロセス
バックグラウンド・プロセスはOracleのインスタンスを構成する要素です。
「Oracle Database」の回でも触れているとおり、バックグラウンド・プロセスには役割の異なる複数のプロセスがあり、これらが協調しながらDBMS(データベース管理システム)としての動作を実現します。
代表的なバックグラウンド・プロセスは以下のとおりです。
※説明は「データベースとは」や「Oracle Database」の回のイメージを引き継ぎます。
■DBWn データベース・ライター(通称:DBライター)
インスタンス君の頭の中にあるデータベースの最新の情報をファイルに記録します。「頭の中」を具体的に言うと「SGAの一部であるバッファ・キャッシュ」です。書き出しのタイミングは後述するCKPTに任せています。
このプロセスは複数を動かすことができ、個々のプロセスを識別するために、末尾のnが1桁の数字またはアルファベットで表されます。
■LGWR ログ・ライター
インスタンス君が頭の中(SGAの一部、REDOログ・バッファ)で覚えているデータベースの変更情報(REDOログ)を定期的にREDOログ・ファイルに書き込みます。
■CKPT チェックポイント
インスタンス君は全ての情報を頭の中に留めておくことはできないので、特定のタイミングで覚えていることをファイルに書き込む必要があります。このタイミングを計り「ここまではファイルを更新した」というしるしを残すのがCKPTの仕事です。実際にファイルへ書き込むことは、DBWnに指示を出して実行してもらいます。
■SMON システム・モニター(通称:エスモン)
インスタンス君やファイルの状態を監視し、必要であればメンテナンスを行なうプロセスです。
一番大きな仕事としてインスタンス・リカバリがあり、何らかの原因によって行動不能になった(ダウンした)インスタンス君が復活したときに、正常な状態に戻れるよう手当をしたりします。
■PMON プロセス・モニター(通称:ピーモン)
他のプロセスの状態を監視します。おもにユーザー・プロセス(後述します)が動作不能になった場合に、
そのプロセスの後始末を行ない、他のプロセスに悪い影響を及ぼさないようにします。
サーバー・プロセス
ユーザー・プロセスと直接のやり取りをするプロセスです。
以前の図で紹介されていたインスタンス君の子分にあたります。
バックグラウンド・プロセスに対して、フォアグラウンド・プロセスと呼ばれることもあります。
サーバー・プロセスには「専用サーバー」と「共有サーバー」という2種類の使われ方があります。詳しくは次回以降で説明しますので、ここでは名前だけの紹介にしておきます。
ユーザー・プロセス
サーバー・プロセスに対して仕事を要求する側で、以前の図のご主人様に当たります。
クライアント・プロセスと表現されることもあります。
このご主人様は何者か...?
実際的な話をすると、業務システム端末だったりアプリケーション・サーバーだったりします。
さらに細かくすると、JavaやC言語で作られたアプリケーションそのものを示します。
今回のまとめ
Oracleが稼動する上で必要となるプロセスについて説明しました。
この次はサーバー・プロセスについて詳しい話をしていきます。