ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
SGA とは
SGA (System Global Area) は Oracle Database インスタンス起動時に確保される共有メモリ領域です。インスタンスを構成するすべてのバックグラウンドプロセスとサーバープロセスがアクセスし、データキャッシュや SQL の実行計画キャッシュなど、性能の要となるあらゆる情報がここに乗ります。
対して、各セッション固有のソート領域・カーソル情報などは PGA (Program Global Area) に置かれます。インスタンス全体で使用するメモリは SGA + PGA です。
SGA の構成要素
+----------------- SGA ------------------+
| Database Buffer Cache (データブロック) |
| Shared Pool |
| - Library Cache (SQL 実行計画/PL/SQL) |
| - Data Dictionary Cache |
| - Result Cache |
| Redo Log Buffer |
| Large Pool (バックアップ/RMAN/共有サーバ)|
| Java Pool |
| Streams Pool |
| Fixed SGA (内部管理用) |
+----------------------------------------+
| コンポーネント | 役割 | パラメータ |
|---|---|---|
| Database Buffer Cache | データブロックのキャッシュ | DB_CACHE_SIZE |
| Shared Pool | SQL/PL-SQL 実行計画、データディクショナリ | SHARED_POOL_SIZE |
| Redo Log Buffer | 変更ログを REDO ファイルに書き出す前のバッファ | LOG_BUFFER |
| Large Pool | RMAN バックアップ、共有サーバー、Parallel Query | LARGE_POOL_SIZE |
| Java Pool | Java VM 用メモリ | JAVA_POOL_SIZE |
| Streams Pool | Streams / GoldenGate 用キュー | STREAMS_POOL_SIZE |
SGA を確認するコマンド
-- SQL*Plus で簡易確認
SHOW SGA
-- 出力例:
-- Total System Global Area 8589934592 bytes
-- Fixed Size 2261112 bytes
-- Variable Size 1543504200 bytes
-- Database Buffers 7038007296 bytes
-- Redo Buffers 6161984 bytes
-- v$sga: コンポーネント別サマリ
SELECT name, value/1024/1024 AS mb FROM v$sga;
-- v$sgainfo: 詳細
SELECT name, ROUND(bytes/1024/1024, 1) AS mb, resizeable
FROM v$sgainfo
ORDER BY bytes DESC;
-- v$sgastat: 最も細かい内訳
SELECT pool, name, ROUND(bytes/1024/1024, 2) AS mb
FROM v$sgastat
WHERE bytes > 1024*1024
ORDER BY bytes DESC;
パラメータ確認
-- 主要パラメータ
SHOW PARAMETER sga_target;
SHOW PARAMETER sga_max_size;
SHOW PARAMETER memory_target;
SHOW PARAMETER memory_max_target;
-- コンポーネント別
SHOW PARAMETER db_cache_size;
SHOW PARAMETER shared_pool_size;
SHOW PARAMETER large_pool_size;
SHOW PARAMETER java_pool_size;
SHOW PARAMETER log_buffer;
3 つのメモリ管理モード
| モード | 設定パラメータ | 挙動 |
|---|---|---|
| AMM (Automatic Memory Management) | MEMORY_TARGET | SGA + PGA を一括自動配分 |
| ASMM (Automatic Shared Memory Management) | SGA_TARGET | SGA 内のコンポーネントを自動配分 |
| 手動 | 各 SIZE パラメータを個別設定 | 古いやり方。Oracle 9i 以前 |
AMM の設定(Oracle 11g+ 推奨)
-- MEMORY_TARGET だけ設定すれば SGA も PGA も自動
ALTER SYSTEM SET memory_target = 16G SCOPE=SPFILE;
ALTER SYSTEM SET memory_max_target = 16G SCOPE=SPFILE;
-- SGA / PGA の個別パラメータは 0 にしておく
ALTER SYSTEM SET sga_target = 0 SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 0 SCOPE=SPFILE;
-- 再起動が必要
SHUTDOWN IMMEDIATE
STARTUP
-- 注意: Linux で HugePages を使うなら AMM は不可 → ASMM を使う
ASMM の設定(HugePages 利用時 / 安定運用向け)
-- SGA だけ自動管理(PGA は別途 PGA_AGGREGATE_TARGET で指定)
ALTER SYSTEM SET sga_target = 8G SCOPE=BOTH;
ALTER SYSTEM SET sga_max_size = 8G SCOPE=SPFILE; -- 要再起動
ALTER SYSTEM SET pga_aggregate_target = 4G SCOPE=BOTH;
-- 個別コンポーネントは「最小保証値」として残せる
ALTER SYSTEM SET db_cache_size = 2G SCOPE=BOTH;
ALTER SYSTEM SET shared_pool_size = 1G SCOPE=BOTH;
-- → Oracle がこれを下回らない範囲で動的に調整
SGA_TARGET と SGA_MAX_SIZE の関係
- SGA_MAX_SIZE: SGA に確保しうる最大値(インスタンス起動時に予約される上限)。変更には再起動必須
- SGA_TARGET: 動的に変更可能な「現在のターゲット値」。SGA_MAX_SIZE 以下なら自由に増減
運用パターン: SGA_MAX_SIZE を物理メモリの 60〜70% で確保 → SGA_TARGET を当初は小さめに → 監視しながら拡大。
HugePages を使った安定運用(Linux)
# 必要な HugePages 数を計算(例: SGA 8GB / HugePage 2MB)
# 8 * 1024 / 2 = 4096 ページ + 余裕で 4200 程度
# /etc/sysctl.conf に追加
vm.nr_hugepages = 4200
sudo sysctl -p
# /etc/security/limits.conf に追加(oracle ユーザー)
oracle soft memlock 8388608
oracle hard memlock 8388608
# 確認
grep HugePages /proc/meminfo
# HugePages_Total: 4200
# HugePages_Free: 50
# HugePages_Rsvd: 50
# Oracle 側
ALTER SYSTEM SET use_large_pages = ONLY SCOPE=SPFILE;
-- AMM (MEMORY_TARGET) と HugePages は併用不可!
ALTER SYSTEM SET memory_target = 0 SCOPE=SPFILE;
SHUTDOWN IMMEDIATE
STARTUP
SGA サイズの目安
| 物理メモリ | SGA 推奨 | PGA 推奨 |
|---|---|---|
| 8 GB | 4 GB | 2 GB |
| 16 GB | 8 GB | 4 GB |
| 32 GB | 16 GB | 8 GB |
| 64 GB | 32 GB | 16 GB |
| 128 GB | 64〜80 GB | 20〜30 GB |
OS と他プロセス用に最低でも全体の 20% は残すこと。仮想化環境ではバルーニングに注意。
SGA リサイズイベントの監視
-- ASMM/AMM がコンポーネントを動的に変更した履歴
SELECT
component,
oper_type,
oper_mode,
initial_size/1024/1024 AS initial_mb,
target_size/1024/1024 AS target_mb,
final_size/1024/1024 AS final_mb,
start_time, end_time, status
FROM v$sga_resize_ops
ORDER BY start_time DESC
FETCH FIRST 20 ROWS ONLY;
-- 現在のコンポーネントサイズ
SELECT
component,
current_size/1024/1024 AS current_mb,
min_size/1024/1024 AS min_mb,
max_size/1024/1024 AS max_mb
FROM v$sga_dynamic_components;
SGA 関連のエラー
| エラー | 原因 | 対処 |
|---|---|---|
| ORA-00845: MEMORY_TARGET not supported on this system | /dev/shm のサイズ不足 | tmpfs の mount オプションで size 拡大 |
| ORA-04031: unable to allocate N bytes of shared memory | Shared Pool 不足 | SHARED_POOL_SIZE 拡大 / バインド変数化 |
| ORA-27101: shared memory realm does not exist | インスタンスが起動していない | STARTUP |
| ORA-04030: out of process memory | PGA 不足 | PGA_AGGREGATE_TARGET 拡大 |
FAQ
Q: AMM と ASMM どちらを選ぶ?
A: Linux で HugePages を使うなら ASMM 一択。Windows や HugePages 不要なら AMM が手軽。
Q: SGA を増やしたら遅くなった
A: スワップ発生していないか確認 (vmstat 1)。物理メモリを超過すると逆効果。
Q: 個別パラメータ (DB_CACHE_SIZE 等) は ASMM でも設定意味ある?
A: ASMM 下では「最小保証値」になります。動的調整でその値を下回らないようにできます。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
- SGA(システムグローバル領域)
- PGA
- バックグラウンドプロセス
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?