Memory Architecture   «Prev  Next»

Lesson 8 The large pool
Objective Identify the Function of the Large Pool.

What Is the Function of the Oracle Large Pool

The Large Pool is an optional memory structure within the System Global Area (SGA), set aside for operations that need large, contiguous chunks of memory. It is not present by default; a DBA has to explicitly configure one. By isolating these large allocations from the Shared Pool, the Large Pool reduces fragmentation and contention there, which is exactly the performance problem it exists to solve. Without a Large Pool configured, Oracle falls back to allocating this same memory from the Shared Pool instead, competing directly with cached SQL and PL/SQL for the same space.

Key Uses of the Large Pool

The Large Pool is primarily used for:
  1. RMAN Backup and Restore: Oracle Recovery Manager allocates memory for its I/O buffers here rather than in the Shared Pool, improving backup and restore performance.
  2. Parallel Query Execution: message buffers that let parallel query processes communicate with each other are allocated from the Large Pool.
  3. Shared Server: in a Shared Server configuration (formerly called MTS, Multi-Threaded Server, in much older Oracle documentation), session memory (the UGA, User Global Area) for shared server connections is stored here instead of in the Shared Pool.
  4. Oracle XA: the interface used when a transaction spans multiple databases also draws its session memory from the Large Pool, alongside Shared Server UGA.
  5. I/O Server Processes: memory for asynchronous I/O server process operations.
  6. Advanced Queuing (AQ): message buffers for Advanced Queuing can be allocated from the Large Pool as well.
By keeping these allocations out of the Shared Pool entirely, the database avoids the specific performance overhead of the Shared SQL cache shrinking to make room for large, unrelated allocations.

Fast Ingest and MEMOPTIMIZE FOR WRITE

Oracle AI Database 26ai adds a new Large Pool use case worth knowing about specifically: MEMOPTIMIZE_WRITE_AREA_SIZE sizes an ingest buffer, inside the Large Pool, where Memoptimized Rowstore fast-ingest inserts are buffered before being written out. This is aimed at high-volume, single-row insert workloads, the kind IoT-style applications generate, where paying the full transactional overhead for every individual row would be wasteful.
ALTER SYSTEM SET MEMOPTIMIZE_WRITE_AREA_SIZE = 64M SID='*';
Worth keeping straight: this is the WRITE side of Memoptimized Rowstore only, and it genuinely does live in the Large Pool. The READ side, fast primary-key lookups against MEMOPTIMIZE FOR READ tables, is governed by a separate parameter, MEMOPTIMIZE_POOL_SIZE, which creates its own dedicated memoptimize pool elsewhere in the SGA. That read-side pool is not part of the Large Pool, so don't reach for LARGE_POOL_SIZE or the Large Pool views below to troubleshoot it.

Advantages of Using the Large Pool

  • Reduces Shared Pool Contention: offloading large operations to the Large Pool means the Shared Pool is far less likely to become fragmented or overloaded by them.
  • Improves Performance: RMAN backups, parallel queries, and now fast-ingest inserts all run more efficiently when their memory comes from a pool sized specifically for them.
  • Simplifies Memory Management: separating these allocations from general-purpose SQL and PL/SQL caching makes the whole instance's memory usage easier to reason about and tune.

Configuring the Large Pool

The Large Pool is sized with the LARGE_POOL_SIZE initialization parameter, settable in the parameter file (SPFILE or PFILE) or dynamically at runtime:
ALTER SYSTEM SET LARGE_POOL_SIZE = 256M;
How large to make it depends entirely on your workload. If you rely heavily on RMAN, size it to comfortably fit your I/O buffers. If you're running Shared Server or parallel queries at scale, size it based on session count and query complexity. If you've enabled fast ingest, factor in MEMOPTIMIZE_WRITE_AREA_SIZE as its own separate allocation within the same pool.

Monitoring the Large Pool

Three views cover Large Pool visibility from different angles:
  • V$SGASTAT: detailed, per-component memory allocations across the SGA, including the Large Pool.
  • V$SGA: summary-level information about SGA components.
  • V$SGAINFO: size information for SGA components, useful for quick sanity checks.
To check Large Pool usage specifically:
SELECT * FROM V$SGASTAT WHERE POOL = 'large pool';

When to Use the Large Pool

Consider configuring a Large Pool if any of the following apply:
  • You use RMAN for backups and restores.
  • You run parallel queries frequently.
  • You use Shared Server connections.
  • You've enabled fast ingest for high-volume single-row inserts.
  • You're seeing Shared Pool contention or fragmentation that these operations could be causing.
In short: the Large Pool is optional but genuinely beneficial. It exists specifically to keep large, bursty memory allocations out of the way of the Shared Pool's much more sensitive job of caching SQL and PL/SQL for reuse.

Large Pool: shared server session memory, queues, and large allocations, Oracle AI Database 26ai
Figure 5-8: The Large Pool within the SGA, showing its allocation map (UGA for shared server and Oracle XA, RMAN and I/O worker buffers, parallel execution message pool, and deferred insert buffers for MEMOPTIMIZE FOR WRITE) alongside the shared server queue flow: dispatchers place client requests on a single common request queue, an available shared server process picks one up, and the response is routed back through a per-dispatcher response queue.

One structural difference worth knowing: the Large Pool does not use an LRU list the way reserved space in the Shared Pool does. Memory here is allocated and held until the operation using it is finished, then released back to the pool for the next process to use, rather than being aged out under memory pressure the way Shared Pool memory can be.


Shared large Pools - Quiz

Click the Quiz link below to test your knowledge of the shared pool and the large pool.
Shared Large Pools - Quiz

SEMrush Software 8 SEMrush Banner 8