System Global Area

In the database management systems developed by the Oracle Corporation, the System Global Area (SGA) forms the part of the system memory (RAM) shared by all the processes belonging to a single Oracle database instance. The SGA contains all information necessary for the instance operation.

Components
In general, the SGA consists of the following:
 * buffer cache: holds copies of data blocks read from datafiles
 * dictionary cache: holds information about data dictionary tables, such as information about account, datafile, segment, extent, table and privileges
 * redo log buffer: contains information about database transactions, both committed and uncommitted, in preparation for writing to online redo log files
 * shared pool: holds the dictionary or row cache, the library cache, cursor definitions and shared SQL.
 * Java pool: holds information for parsing Java statements.
 * large pool: including the User Global Area (UGA))
 * stream pool:this is remote connectivity for the database.

Configuration
From Oracle Database version 10g, Automatic Memory Management (AMM) allows simplified and dynamic configuration of the SGA.

Granules
In the Oracle DBMS, the Oracle server allocates the system global area (SGA) in granule units at the time of instance startup. During the startup, each component acquires as many granules as it requires. The SGA can be said to consist of linked granules. The granule size depends on the database version and sometimes on the operating system. In Oracle 9i and earlier, it is 4 MB if the SGA size is less than 128 MB, and 16 MB otherwise. For later releases, it is typically 4 MB if the SGA size is less than 1 GB, and 16 MB otherwise. There must be at least 3 granules in the SGA: one for the Database Buffer Cache, one for the Shared Pool Area and one for the Redo Log Buffer. It is possible to retrieve information about the current granule size at any time by querying the dynamic view V$SGAINFO.