この記事ではOracle Databaseのメモリ構造について解説します。
Oracle Databaseのメモリ構造
Oracle Databaseのメモリ構造は大きく次の2つの領域で構成されています。
・SGA(システムグローバル領域)
データベース全体で使用するメモリ領域です。
共有メモリとも呼ばれ、すべてのサーバ、バックグラウンドプロセスで共有されています。
・PGA(プログラムグローバル領域)
ユーザ(セッション)ごとに使用する領域です。
サーバプロセスやバックグラウンドプロセスごとに存在します。
SGAの構成
SGAは役割に応じてさまざまなコンポーネントに分類されます。
主なコンポーネントは以下の5つになります。
・REDOログバッファ
REDOログファイルに書き込む前のREDOデータを一時的に保管します。
・バッファキャッシュ
データファイルから読みこんだブロックをキャッシュします。
更新されたブロックをデータファイルに書き込むまでの一時的に保管します。
・共有プール
解析済みSQLやデータディクショナリの情報をキャッシュします。
・Javaプール
Javaで記載されたストアドプログラムを実行する際に使用されるメモリ領域です。
・ラージプール
並列処理など大量のメモリを割り当てる際に使用されるメモリ領域です。
PGAの構成
PGAは主に下記の2つの要素から構成されています。
・SQL領域
SQL実行時にソートなどをする際に利用されるメモリ領域です。
・セッションメモリ
セッション情報を格納するメモリ領域です。
共有サーバ接続ではSGA内に確保されます。