| この記事の要点 |
|
SGA における Large Pool の位置づけ
Oracle の SGA (System Global Area) は複数のメモリ領域から構成されます:
| 領域 | 役割 |
|---|---|
| Database Buffer Cache | 表 / 索引のブロックをキャッシュ |
| Shared Pool | SQL の構文解析結果・実行計画・データ・ディクショナリキャッシュ |
| Redo Log Buffer | REDO レコードのバッファ。LGWR が REDO ファイルへ書く |
| Large Pool | 大きい連続メモリが必要な処理用(任意) |
| Java Pool | Java VM 用 |
| Streams Pool | Streams / GoldenGate 用バッファ |
Large Pool の主な用途
| 用途 | 説明 | 関連パラメータ |
|---|---|---|
| RMAN バックアップ / リカバリ | 並列バックアップのスレーブ用バッファ、ディスク I/O バッファ | BACKUP_TAPE_IO_SLAVES |
| 並列クエリ実行 | 並列スレーブ間のメッセージバッファ | PARALLEL_* |
| 共有サーバー (MTS) | UGA(ユーザーグローバル領域)の格納 | DISPATCHERS |
| Data Pump (expdp/impdp) | パイプ・キューバッファ | — |
| I/O Slave 処理 | 非同期 I/O 不可な環境でのスレーブ I/O | DBWR_IO_SLAVES |
Shared Pool との違い
| 項目 | Shared Pool | Large Pool |
|---|---|---|
| 確保単位 | 小〜中(4KB〜数十KB) | 大(数百KB〜数MB) |
| LRU 管理 | あり(古いものから破棄) | なし |
| 断片化 | 起きやすい (ORA-4031 の原因) | 起きにくい |
| 主な内容 | SQL 解析結果・実行計画 | UGA / RMAN バッファ等 |
| 必須か | 必須 | 用途により任意 |
RMAN や並列クエリの大きなメモリ要求を Shared Pool から取ろうとすると、Shared Pool が断片化して ORA-4031(共有プールに空きがない)が出ることがあります。これを避けるため Large Pool を専用に確保します。
Large Pool のサイズ設定
-- 現在のサイズ確認
SHOW PARAMETER large_pool_size;
-- 個別サイズで明示指定(手動メモリ管理)
ALTER SYSTEM SET large_pool_size = 256M SCOPE = BOTH;
-- AMM(Automatic Memory Management)有効時は自動調整
SHOW PARAMETER memory_target; -- 0 でない = AMM 有効
SHOW PARAMETER memory_max_target;
-- ASMM(Automatic Shared Memory Management)
SHOW PARAMETER sga_target; -- 0 でない = ASMM 有効
SHOW PARAMETER sga_max_size;
-- ASMM 配下でも下限を保証したい場合
ALTER SYSTEM SET large_pool_size = 128M SCOPE = BOTH; -- 最低 128M を確保
-- 11g 以降は手動指定しなくても、ASMM/AMM が必要時にサイズを動的に増減
現在の状態を確認するビュー
-- SGA 全体の構成
SELECT name, value/1024/1024 AS mb
FROM v$sga;
-- NAME MB
-- Fixed Size 8
-- Variable Size 1024
-- Database Buffers 2048
-- Redo Buffers 16
-- 動的コンポーネント別のサイズ
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
WHERE component LIKE '%pool%';
-- Large Pool 内部の利用状況
SELECT pool, name, bytes/1024/1024 AS mb
FROM v$sgastat
WHERE pool = 'large pool';
-- POOL NAME MB
-- large pool free memory 120
-- large pool PX msg pool 2
-- large pool KGH: NO ACCESS 8
RMAN で Large Pool が使われる例
-- I/O スレーブを使う設定(テープ装置等で有効)
ALTER SYSTEM SET BACKUP_TAPE_IO_SLAVES = TRUE SCOPE = SPFILE;
ALTER SYSTEM SET LARGE_POOL_SIZE = 256M SCOPE = SPFILE;
-- 並列度を設定して RMAN バックアップ
-- RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
-- RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
-- バックアップ実行中の Large Pool 利用確認
SELECT pool, name, bytes/1024 AS kb
FROM v$sgastat
WHERE pool = 'large pool' AND name LIKE '%KSFQ%';
-- KSFQ = RMAN Sequential I/O Buffer
並列クエリで Large Pool が使われる例
-- 並列度を設定
ALTER SYSTEM SET PARALLEL_MAX_SERVERS = 32;
ALTER SYSTEM SET PARALLEL_MIN_SERVERS = 4;
-- 並列実行のヒント付きクエリ
SELECT /*+ PARALLEL(emp, 8) */ COUNT(*) FROM emp_billion;
-- 並列スレーブのメッセージバッファ確認
SELECT pool, name, bytes/1024 AS kb
FROM v$sgastat
WHERE pool = 'large pool' AND name LIKE '%PX%';
-- PX msg pool : Parallel eXecution メッセージ用
ORA-4031 と Large Pool の関係
OLTP + バッチ並行運用の本番でORA-04031: unable to allocate ... bytes of shared memoryが出る場合、Shared Pool 内で巨大連続領域を要求して断片化が原因のことが多いです:
-- 1. Large Pool を明示確保して逃がす
ALTER SYSTEM SET LARGE_POOL_SIZE = 256M;
-- 2. UGA を Large Pool に逃がす(共有サーバー時)
-- 自動的に Large Pool へ確保される
-- 3. Shared Pool の断片化解消(緊急対応)
ALTER SYSTEM FLUSH SHARED_POOL;
-- ★ 本番では SQL 計画キャッシュも消えるので注意。再ハードパースで CPU 跳ね上がる
サイズ見積もりの目安
| 用途 | 推奨サイズ |
|---|---|
| 小規模・RMAN のみ | 64M〜128M |
| 並列クエリ多用 | 256M〜512M |
| 共有サーバー + UGA 大 | 同時セッション × UGA 平均サイズ × 1.5 |
| 大規模 OLAP / DWH | 1G 以上、SGA_TARGET の 10〜20% |
AMM / ASMM 有効時はサイズを直接指定する必要はほぼありません。AWR レポートで Large Pool が圧迫されているなら下限を LARGE_POOL_SIZE で明示する程度です。
FAQ
Q: Large Pool を 0 にしたらどうなる?
A: 用途は Shared Pool で代用されますが、断片化リスクが上がります。並列クエリ・RMAN・MTS のいずれかを使うなら 64M 以上は確保しましょう。
Q: AMM と ASMM どちらが良い?
A: 11g 以降は AMM (memory_target) が手軽ですが、大規模本番では ASMM (sga_target + pga_aggregate_target) の方が予測性が高く推奨されます。
Q: AWR で Large Pool の使用率を見たい
A: AWR レポートの「Memory Statistics」セクションに current_size / target_size が出ます。v$sga_resize_ops でリサイズ履歴も確認可能です。
子ページはありません
- データベースバッファキャッシュ
- 共有プール
- REDOログバッファ
- ラージプール
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- JP1/FTS(File Transmission Server/FTP)とは|伝送カードとftstranの使い方 NEW 2026-10-02 22:03:11
- 日立 JP1 (Job Management Partner 1) 完全ガイド (AJS3 / IM / Base / PFM) 2026-10-02 22:03:11
- JP1/Baseとは|ユーザー認証・ユーザーマッピング・イベントサービスの仕組みと主要コマンド NEW 2026-10-02 22:03:10
- JP1/IM(JP1/IM2・IM3)とは|JP1イベントによる統合監視の仕組みとJP1/Baseとの関係 NEW 2026-10-02 22:03:10
- JP1/AJS3 コマンド一覧|ajsentry・ajsshow・ajsrerunなど主要コマンドの使い方とオプション NEW 2026-10-02 22:03:09
- JP1/AJS3とは?ジョブネット・スケジュール・Manager/Agent/Viewの構成を初心者向けに解説 NEW 2026-10-02 22:03:09
- クラウドネットワークの記事一覧 2026-10-02 16:08:51
- ルーティングとスイッチング完全ガイド — 静的/動的ルーティング/RIP/OSPF/BGP/VLAN/STP 2026-10-02 16:08:51
- ネットワークのアドレッシング完全ガイド — IP/MAC/ポート/サブネット/CIDR/IPv6/NAT 2026-10-02 16:08:51
- 本番環境のdll内で参照しているdllファイルの置き場所 2026-10-02 16:08:50
- 【Visual Studio】 C#のForm自動生成時に「値が有効な範囲にありません」エラー 2026-10-02 16:08:50
- 【Laravelエラー】does not comply with psr-4 autoloading standard. Skipping. 2026-10-02 16:08:50
- 【Laravelエラー】could not find driver(Windows, MySQL編) 2026-10-02 16:08:49
- The following channel memory did not pass cpu memory test. 2026-10-02 16:08:49
- 【pycharm】connecting to console が終わらない 2026-10-02 16:08:49