All technological notes.
Oracle Database creates and uses memory structures for various purposes.
Two basic memory structures are associated with an instance:
System Global Area (SGA)
Program Global Area (PGA)

System Global Area (SGA):
shared pool
data dictionary
The data dictionary is accessed so often by Oracle Database that two special locations in memory are designated to hold dictionary data.
data dictionary cache, also known as the row cache because it holds data as rows instead of buffers (buffers hold entire blocks of data).library cache.All Oracle Database user processes share these two caches for access to data dictionary information.
Oracle Database represents each SQL statement that it runs with a shared SQL area (as well as a private SQL area kept in the PGA). Oracle Database recognizes when two users are executing the same SQL statement and reuses the shared SQL area for those users.

database buffer cache
The first time an Oracle Database user process requires a particular piece of data, it searches for the data in the database buffer cache.
cache hit), it can read the data directly from memory.cache miss), it must copy the data block from a data file on disk into a buffer in the cache before accessing the data.cache hit is faster than accessing data through a cache miss.The buffers in the cache are managed by a complex algorithm that uses a combination of least recently used (LRU) lists and touch count.
The keep buffer pool and the recycle buffer pool are used for specialized buffer pool tuning.
keep buffer pool
recycle buffer pool
buffer caches can be configured to hold blocks of a size that is different from the default block size.
redo log buffer
redo entries.Redo entries
DML, DDL, or internal operations.As the server process makes changes to the buffer cache, redo entries are generated and written to the redo log buffer in the SGA. The redo entries take up continuous, sequential space in the buffer.
Process
log writer background process writes the redo log buffer to the active redo log file (or group of files) on disk.
Large Pool
By allocating session memory from the large pool for shared server, Oracle XA, or parallel query buffers, Oracle Database can use the shared pool primarily for caching shared SQL and** avoid the performance overhead** that is caused by shrinking the shared SQL cache.
In addition, the memory for Oracle Database backup and restore operations, for I/O server processes and for parallel buffers, is allocated in buffers of a few hundred kilobytes. The large pool is better able to satisfy such large memory requests than the shared pool.
The large pool is not managed by a least recently used (LRU) list.

Java pool memory
Java Virtual Machine (JVM).
Streams pool memory is used exclusively by Oracle Streams to:
Streams pool
Oracle Streams.Oracle Streams capture processes and apply processes.
Program Global Area (PGA)
A PGA is nonshared memory created by Oracle Database when a server or background process is started.
server process has a distinct PGA.
In a dedicated server environment, each user connecting to the database instance has a separate server process. For this type of connection, the PGA contains a subdivision of memory known as the User Global Area (UGA).
The UGA is composed of:
ORDER BY and GROUP BYIn a shared server environment, multiple client users share the server process.
SGA (shared pool or large pool if configured), leaving the PGA with only stack space.
Summary:
read only: not available for developer’s code
Dedicated PGA:
In-Memory Column Store
columnar format.columnar format
OLTP and DW environments.When a segment, such as a table or a partition, is populated into the IM column store, the on-disk format segment is automatically converted into a columnar format and optionally compressed.
The in-memory columnar format does not replace the on-disk or buffer cache format. It is a consistent copy of a table or of some columns of a table converted to the new columnar format that is independent of the disk format and only available in memory.
Moreover, the columnar format of a segment is a transaction-consistent copy of the segment either on disk or in the buffer cache. Transaction consistency between the two pools is maintained.
SGA. The pool is the IM column store.
IM column store, a query that accesses objects that are candidates to be populated into the IM column store performs much faster.

| portion of the SGA | Process | File | Desc |
|---|---|---|---|
Shared pool |
data dict,sql statement | ||
Database Buffer Cache |
DBWn |
data file |
holds block images read from data files |
Redo Log Buffer |
LGWR |
redo log file |
holds information about changes |
Large Pool |
Session, IO, Query, queue | ||
Java Pool |
JVM | ||
Streams Pool |
Streams processes |
Queue messages |