Memory Architecture   «Prev  Next»

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

Identify Functions of Oracle Large Pool

The role of the "Oracle Large Pool" has not fundamentally changed from Oracle 12c to Oracle 19c. The Oracle Large Pool, an optional area of the System Global Area (SGA), is primarily designated for memory allocations that are too large to fit into the shared pool or for operations that should not compete with the shared pool memory. Its primary functions include:
  1. Shared Server Architecture: In a shared server architecture, the large pool is used to allocate session memory for the shared server processes and the dispatcher, reducing the burden on the shared pool. This helps in managing user sessions more efficiently by keeping the shared pool free for other operations like caching SQL and PL/SQL.
  2. Backup and Restore Operations: The large pool is used for backup and restore operations, particularly when using RMAN (Recovery Manager). It serves as a buffer for I/O operations, enhancing the performance of these activities by providing a dedicated memory area, thereby not affecting the performance of operations that rely on the shared pool.
  3. Parallel Execution: For parallel execution of operations, Oracle may allocate buffers in the large pool for message buffers. This allocation strategy helps in optimizing the execution of parallel queries and DML operations by ensuring that the shared pool is not depleted by the large memory requirements of parallel execution processes.

From Oracle 12c to Oracle 19c, while there have been enhancements and performance improvements across the Oracle Database system, the conceptual role and primary use cases of the Large Pool remain consistent. Oracle continues to focus on improving the efficiency and performance of memory management, but the fundamental purposes of the Large Pool as described have not undergone significant changes between these versions. It is important for Oracle Cloud Architects and DBAs to understand the optimal use of the Large Pool in their specific environments, as its effective use can lead to significant performance improvements, especially in systems with heavy parallel execution and shared server configurations. Proper sizing and configuration of the Large Pool, in accordance with Oracle's best practices and guidelines, remain crucial for achieving optimal database performance and resource utilization.


Large memory allocations

The large pool is an optional memory area. It provides an area of memory from which large allocations can be made. Oracle's backup and restore utilities typically allocate buffers that are hundreds of kilobytes in size. These will be allocated in the large pool if one is present. The multi-threaded server will also take advantage of the large pool, allocating session memory there instead of in the shared pool, thus leaving more of the shared pool open for SQL statements and execution plans.

Configuring Large Pool

A large pool will only be present if the DBA has used the LARGE_POOL_SIZE initialization parameter to configure one. For example, to allocate a large pool of 10 megabytes, you would add the following line to your database's initialization file:
LARGE_POOL_SIZE = 10M

Large Pool

The large pool is an optional memory area intended for memory allocations that are larger than is appropriate for the shared pool. The large pool can provide large memory allocations for the following:
  1. UGA for the shared server and the Oracle XA interface (used where transactions interact with multiple databases)
  2. Message buffers used in the parallel execution of statements
  3. Buffers for Recovery Manager (RMAN) I/O slaves
By allocating session memory from the large pool for shared SQL, the database avoids performance overhead caused by shrinking the shared SQL cache. By allocating memory in large buffers for RMAN operations, I/O server processes, and parallel buffers, the large pool can satisfy large memory requests better than the shared pool.
Figure 5-8 is a graphical depiction of the large pool.

Figure 5-8 Large Pool
Figure 5-8 Large Pool

The large pool is different from reserved space in the shared pool, which uses the same LRU list as other memory allocated from the shared pool. The large pool does not have an LRU list. Pieces of memory are allocated and cannot be freed until they are done being used. As soon as a chunk of memory is freed, other processes can use it.

Java Pool

The Java pool is an area of memory that stores all session-specific Java code and data within the Java Virtual Machine (JVM). This memory includes Java objects that are migrated to the Java session space at end-of-call. For dedicated server connections, the Java pool includes the shared part of each Java class, including methods and read-only memory such as code vectors, but not the per-session Java state of each session. For shared server, the pool includes the shared part of each class and some UGA used for the state of each session. Each UGA grows and shrinks as necessary, but the total UGA size must fit in the Java pool space. The Java Pool Advisor statistics provide information about library cache memory used for Java and predict how changes in the size of the Java pool can affect the parse rate. The Java Pool Advisor is internally turned on when statistics_level is set to TYPICAL or higher. These statistics reset when the advisor is turned off.

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