ここでは、Oracleインスタンスを構成する各コンポーネントについて確認する。OracleインスタンスOracleインスタンスはシステムグローバル領域と呼ばれるメモリー構造と、バックグラウンドプロセスという複数のプロセス群から構成される。
システムグローバル領域(SGA)
システムグローバル領域(SGA)はOracleインスタンスにアクセスする複数のユーザーが共有して利用するメモリー構造で、以下のような領域から構成されている。
データベースバッファキャッシュ
データベースバッファキャッシュは、データファイルから読み込んだデータブロックのコピーをキャッシュする領域である。サーバープロセスは必要なデータをこのキャッシュ内で検索する。必要なデータが見つからなかった場合は、データファイルからデータを読み込む。キャッシュされたデータは使用頻度が低いものから上書きされるLRU(最低使用頻度)アルゴリズムで管理されている。また、DMLによるデータの変更はこの領域上で行われ、変更内容はDBWnプロセスによりデータファイルに書き込まれる。
共有プール
共有プールは、主に次の情報を保持する領域である。
- SQL文の解析結果、実行計画
- OracleがSQLを解析する場合などに使用するデータディクショナリ情報
この領域もLRUアルゴリズムにより管理されている。
REDOログバッファ
REDOログバッファは、データベースに加えられた変更情報(REDO情報)を保持する領域。この領域は、新しい情報で古い情報を上書きする循環バッファである。保持されたREDO情報はLGWRプロセスによりREDOログファイルに書き込まれ、必要に応じてデータベースのリカバリ時に使用される。
ラージプール
ラージプールはオプションのメモリー領域で、主に次の情報を保持するために使用する。
- 共有サーバー時のセッションメモリー
- Recovery Manager(RMAN)使用時のバックアップ・リストアに使用する情報。
Javaプール
Javaプールは、Java仮想マシン(JVM)に含まれるセッション固有のJavaコードやデータを格納するために使用されるオプションのメモリ領域である。
バックグラウンドプロセス
バックグラウンドプロセスは、Oracleサーバー上で常駐しメモリー管理やI/O処理などを実行する複数のプロセスの総称である。
SMON(システムモニター)
インスタンスに障害が発生した場合、次回のデータベース起動時にインスタンスのリカバリを行うプロセスである。
PMON(プロセスモニター)
ユーザープロセスに障害が発生した場合、トランザクションのロールバックや使用していたリソースの開放などのクリーンアップ処理を行うプロセスである。
DBWn(データベースライター)
DBWnはデータベースバッファキャッシュ上の変更されたバッファ(使用済みバッファ)をデータファイルに書き込む。データベースライターは複数起動することができるので、DBWnと表記する。nには番号が入り、実際のプロセス名はDBW0、DBW1…のようになる。
DBWnは以下のタイミングで書き込みを行う。
- チェックポイント発生時
- 変更されたバッファの数がしきい値に達したとき
- タイムアウト発生時(3秒)
LGWR(ログライター)
REDOログバッファに生成されたREDO情報(更新情報)を現在の書き込み対象(カレント)のREDOログファイルに書き込むプロセスである。
LGWRは以下のタイミングでREDOログファイルにREDO情報を書き込む。
- コミット時
- REDOログバッファの1/3がいっぱいになった時
- DBWnが変更されたバッファをデータファイルに書き込むとき
- 3秒おき
CKPT(チェックポイント)
チェックポイントイベント発生時に、DBWnに対して書き込み指示を出す。また、すべてのデータファイルと制御ファイルのヘッダーを更新し、チェックポイントが実行されたことを記録する。これにより、コミットされたすべての変更がデータファイルに書き込まれたことが保証され、インスタンスリカバリにかかる時間を短くすることができる。
ARCn(アーカイバ)
損失に備えて作成するREDOログファイルのコピーをアーカイブログファイルと呼ぶ。ARCnは、データベースがARCHIVELOGモードで、自動アーカイブを有効にした場合に存在するオプションのプロセスである。アーカイブログファイルを作成しない場合は必要ない。
MMON(マネージメントモニター)
Oracleサーバーの管理に関連する以下のようなバックグラウンドプロセスを実行するプロセスである。
- 指定のメトリックがしきい値に違反したときにアラートを発行する。
- 追加プロセスを起動してスナップショットを取得する。
- 前回変更されたSQLオブジェクトの統計値を取得する。
まとめ
システムグローバル領域
- データベースに加えられた変更情報(REDO情報)を保持する領域:REDOログバッファ
- SQL文の解析結果、実行計画などを保持する領域:共有プール
- データファイルから読み込んだデータブロックのコピーを保持する領域:データベースバッファキャッシュ
- 共有サーバー時のセッションメモリーなどの情報を保持する領域:ラージプール
バックグラウンドプロセス
- ユーザープロセスに障害が発生し場合、トランザクションのロールバックや使用していたリソースの開放などのクリーンアップ処理を行うプロセス:プロセスモニター
- データベースバッファキャッシュ上の変更されたバッファをデータファイルに書き込むプロセス:DBWn(データベースライター)
- 損失に備えREDOログファイルのコピーを作成するプロセス:LGWR(ログライター)
- 指定のメトリックがしきい値に違反したときにアラートを発行するプロセス:MMON(マネージメントモニター)
- インスタンスのリカバリを行うプロセス:SMON(システムモニター)
最終更新:2014年03月23日 08:27