| 項目 | バージョン |
|---|---|
| Oracle | 10gR2/11gR2/19c |
■プロセスの構成
Oracleは複数のプロセスから構成されており、RDBMSとしてデータの保全を行いつつ、複数のクライアントからのデータアクセスを効率よく捌く仕組みになっています。SQLを受け付けてデータの読出しを行うプロセスに加え、ディスクへのデータ書き出しを行うプロセスがそれぞれ独立しています。それぞれのプロセスが連携して動作するように成り立っています。実際のところ、Windowsプラットフォーム上ではそれぞれが異なるプロセスではなく1つのプロセス内で役割の異なるスレッドで実装されているようですが、ここでは便宜上「プロセス」という形で書きます。
| プロセス名 | 役割 |
|---|---|
| サーバプロセス | クライアントの受付窓口となり、SQLの解析、データの読出し、クライアントへの応答等を行う |
| データベース(DB)ライター | データディスクへの書き出しを行う |
| ログライター | ログへのデータ書き出しを行う |
| プロセスモニター | プロセス監視を行う |
| アーカイバ | アーカイブログ出力を行う |
■Oracleのインスタンスとは
Oracleでいう「インスタンス」とは共有メモリ+バックグラウンドプロセスを指します。(下記図の赤枠部)
通常異なるプロセス間でデータの共有はできないのですが、「共有メモリ」はそれを可能とするOSの仕組みです。OracleではSGA(System Global Area)と呼び、それを利用してサーバプロセスやインスタンスを構成するバックグラウンドプロセスとデータを共有し効率の良いデータアクセス機能を提供します。(WindowsのOracleではoracle.exeのメモリとして管理される)

共有メモリには「バッファキャッシュ」、「ログバッファ」、「共有プール」などが含まれます。
- バッファキャッシュ・・・いわゆるデータのキャッシュ。
- ログバッファ・・・データベース更新「ログ」のキャッシュ。
- 共有プール・・・パーサと呼ばれるSQL解析処理の仕組みが算出する実行計画やその実行計画を求めるための統計情報のキャッシュなどを保持するキャッシュ。

共有プール内はさらに細かく下記のように分かれています。

(参考)
コメントを残す