この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:3
ページ更新者:atom
更新日時:2026-05-17 06:28:43

タイトル: SGA(システムグローバル領域)

OracleのSGA(システムグローバル領域)の記事です。

SGAとはインスタンス内にあるメモリの管理領域です。Oracleが起動するときに確保され、同じインスタンスに接続するすべてのプロセスから共有されます。

SGAを構成するそれぞれの要素は項目を参照してください。

SGAの全体構造

SGAは複数の領域から構成され、それぞれ役割が異なります。代表的な要素は次の通りです。

領域役割
データベースバッファキャッシュデータブロックのキャッシュ。SELECTのI/Oを減らす
共有プールSQL実行計画やデータディクショナリのキャッシュ
REDOログバッファ更新内容を一時保持し、REDOログファイルへの書き出し前段
ラージプール大きなメモリ要求向け(バックアップ、並列処理、共有サーバー)
JavaプールJava VM のメモリ領域(PL/SQL Javaストアド利用時)
StreamsプールStreams/Replication 用

SGAとインスタンスの関係

  • 1インスタンス = 1つのSGA — Oracle起動時に STARTUP でメモリ確保
  • SGA + PGA — 全プロセス共有がSGA、各プロセス固有がPGA(Program Global Area)
  • パラメータで設定SGA_TARGET / SGA_MAX_SIZE や、より自動化された MEMORY_TARGET

SGAサイズの確認

SQL> SHOW SGA

-- 詳細な構成内訳
SQL> SHOW PARAMETER sga
SQL> SELECT * FROM v$sgainfo;

SGAの調整

-- 動的に変更(spfile使用時)
SQL> ALTER SYSTEM SET SGA_TARGET = 2G SCOPE = BOTH;

-- 現在の値を確認
SQL> SHOW PARAMETER sga_target;

SGA管理モードの違い

モード挙動
ManualDB_CACHE_SIZE等の個別パラメータをすべて手動指定
Auto Shared Memory Management (ASMM)SGA_TARGET を指定すれば、Oracle が領域配分を自動調整
Auto Memory Management (AMM)MEMORY_TARGET でSGA+PGAをまとめて自動管理(11g以降)

注意点

  • 本番DBで SGA_TARGET を急に小さくすると性能低下する。段階的に調整する
  • MEMORY_TARGET(AMM)はLinuxでは /dev/shm 設定との整合が必要
  • SGAサイズが大きすぎるとOSのスワップを誘発し、逆に遅くなる
  • Oracleバージョンで管理方式の推奨が異なる。19c以降は AMM 非推奨で ASMM 推奨

関連