Oracle Database Memory Structures
Oracle Database creates and uses memory structures for various purposes. For example, memory
stores program code being run, data that is shared among users, and private data areas for each
connected user.
Two basic memory structures are associated with an instance:
• System Global Area (SGA):Group of shared memory structures, known as SGA
components, that contain dataand control information for one Oracle Database instance.
The SGA is shared by all server and background processes. Examples of data stored in the
SGA include cached data blocks and shared SQL areas.
• Program Global Areas (PGA):Memory regions that contain data and control information
for a server or background process. A PGA is nonshared memory created by Oracle
Database when a server or background process is started. Access to the PGA is exclusive
to the server process. Each server process and background process has its own PGA
The SGA is the memory area thatcontains data and control information for the instance. The
SGA includes the following data structures:
• Shared pool:Caches various constructs that can be shared among users
• Database buffer cache:Caches blocks of data retrieved from the database
• KEEP buffer pool:A specialized type of database buffer cache that is tuned to retain
blocks of data in memoryfor long periods of time
• RECYCLE buffer pool:A specialized type of database buffer cache that is tuned to
recycle or remove block from memory quickly
• nK buffer cache:One of several specialized database buffer caches designed to hold
block sizes different than the default database block size
• Redo log buffer:Caches redo information (used for instance recovery) until it can be
written to the physical redo log files stored on the disk
• Large pool:Optional area that provides large memory allocations for certain large
processes, such as Oracle backup and recovery operations, and I/O server processes
• Java pool:Used for all session-specific Java code and data in the Java Virtual Machine
(JVM)
• Streams pool:Used by Oracle Streams to store information required by capture and apply
When you start the instance by using Enterprise Manager or SQL*Plus, the amount of memory
allocated for the SGA is displayed.
A Program Global Area (PGA) isa memory region that containsdata and control information
for each server process. An Oracle server process services a client’s requests. Each server
process has its own private PGA that is allocated when the server process is started. Access to
the PGA is exclusive to that server process, and the PGA is read and written only by the Oracle
code acting on its behalf. The PGA is divided into two major areas: stack space and the user
global area (UGA).
With the dynamic SGA infrastructure, the sizes ofthe database buffer cache, the shared pool, the
large pool, the Java pool, and the Streams pool can change without shutting down the instance.
The Oracle database uses initialization parametersto create and manage memory structures. The
simplest way to manage memory isto allow the database to automatically manage and tune it for
you. To do so (on most platforms), you only have to set a target memory size initialization
parameter (MEMORY_TARGET) and a maximum memory size initialization parameter
(MEMORY_MAX_TARGET).