A system global area (SGA) is a group of shared memory
structures that contain data and control information for one Oracle database
instance. If multiple users are concurrently connected to the same instance,
then the data in the instance's SGA is shared among the users. Consequently,
the SGA is sometimes called theshared global area.
An SGA and Oracle
processes constitute an Oracle instance. Oracle automatically allocates memory
for an SGA when you start an instance, and the operating system reclaims the memory
when you shut down the instance. Each instance has its own SGA.
The SGA
is read/write. All users connected to a multiple-process database instance can
read information contained within the instance's SGA, and several processes
write to the SGA during execution of Oracle.
The SGA contains the
following data structures:
- Database buffer cache
- Redo log buffer
- Shared pool
- Java pool
- Large pool (optional)
- Data dictionary cache
- Other miscellaneous information
Part of the SGA contains
general information about the state of the database and the instance, which the
background processes need to access; this is called the fixed SGA.
No user data is stored here. The SGA also includes information communicated
between processes, such as locking information.
If the
system uses shared server architecture, then the request and response queues
and some contents of the PGA are in the SGA.
Dynamic SGA
With the dynamic SGA
infrastructure, the size of the buffer cache, the shared pool, the large pool,
and the process-private memory can be changed without shutting down the
instance.
Dynamic
SGA allows Oracle to set, at run time, limits on how much virtual memory Oracle
uses for the SGA. Oracle
can start instances underconfigured and allow the instance to use more memory
by growing the SGA components, up to a maximum of
SGA_MAX_SIZE
. If SGA_MAX_SIZE
specified in the initialization parameter
file is less than the sum of all components specified or defaulted at
initialization time, then the setting in the initialization parameter file is
ignored.
For
optimal performance in most systems, the entire SGA should fit in real memory. If it does not, and if virtual memory is
used to store parts of it, then overall database system performance can
decrease dramatically, because portions of the SGA are paged (written to and
read from disk) by the operating system. The amount of memory dedicated to all
shared areas in the SGA also has performance impact.
Database
Buffer Cache
The database buffer
cache is the portion of the SGA that holds copies of data blocks read from
datafiles. All user processes concurrently connected to the instance share access
to the database buffer cache.
The
database buffer cache and the shared SQL cache are logically segmented into
multiple sets. This organization into multiple sets reduces contention on
multiprocessor systems.
Organization
of the Database Buffer Cache
The buffers in the cache are organized in two
lists: the write list and the least recently used (LRU) list. The write list holds dirty buffers, which contain data that has been modified
but has not yet been written to disk. The LRU list holds free buffers, pinned buffers,
and dirty buffers that have not yet been moved to the write list.Free
buffers do not contain
any useful data and are available for use. Pinned
buffers are currently
being accessed.
When an
Oracle process accesses a buffer, the process moves the buffer to the most
recently used (MRU) end of the LRU list. As more buffers are continually moved
to the MRU end of the LRU list, dirty buffers age toward the LRU end of the LRU
list.
The
first time an Oracle user process requires a particular piece of data, it
searches for the data in the database buffer cache. If the process finds the
data already in the cache (a cache
hit), it can read the data directly from memory. If the process cannot
find the data in the cache (a cache
miss), it must copy the data block from a datafile on disk into a
buffer in the cache before accessing the data. Accessing data through a cache
hit is faster than data access through a cache miss.
Checking The Cache Hit Ratio
Oracle maintains statistics of buffer cache hits and misses. The following query will show you the overall buffer cache hit ratio for the entire instance since it was started:
Checking The Cache Hit Ratio
Oracle maintains statistics of buffer cache hits and misses. The following query will show you the overall buffer cache hit ratio for the entire instance since it was started:
SELECT (P1.value + P2.value - P3.value) / (P1.value + P2.value)
FROM v$sysstat P1, v$sysstat P2, v$sysstat P3
WHERE P1.name = 'db block gets'
AND P2.name = 'consistent gets'
AND P3.name = 'physical reads'
Before
reading a data block into the cache, the process must first find a free buffer.
The process searches the LRU list, starting at the least recently used end of
the list. The process searches either until it finds a free buffer or until it
has searched the threshold limit of buffers.
If the
user process finds a dirty buffer as it searches the LRU list, it moves that
buffer to the write list and continues to search. When the process finds a free
buffer, it reads the data block from disk into the buffer and moves the buffer
to the MRU end of the LRU list.
If an
Oracle user process searches the threshold limit of buffers without finding a
free buffer, the process stops searching the LRU list and signals the DBW0
background process to write some of the dirty buffers to disk.
The
LRU Algorithm and Full Table Scans
When
the user process is performing a full table scan, it reads the blocks of the
table into buffers and puts them on the LRU end (instead of the MRU end) of the
LRU list. This is because a fully scanned table usually is needed only briefly,
so the blocks should be moved out quickly to leave more frequently used blocks
in the cache.
You can
control this default behavior of blocks involved in table scans on a
table-by-table basis. To specify that blocks of the table are to be placed at
the MRU end of the list during a full table scan, use the
CACHE
clause when creating or altering a table
or cluster. You can specify this behavior for small lookup tables or large
static historical tables to avoid I/O on subsequent accesses of the table.
Size
of the Database Buffer Cache
Oracle
supports multiple block size in a database. This is the default block size--the
block size used for the system tablespace. You specify the standard block size
by setting the parameter
DB_BLOCK_SIZE
. Legitimate values are from 2K to 32K.
·
DB_4K_CACHE_SIZE (used
with tablespace block size of 4k)
·
DB_8K_CACHE_SIZE (used
with tablespace block size of 8k)
·
DB_16K_CACHE_SIZE (used
with tablespace block size of 16k)
·
DB_32K_CACHE_SIZE (used
with tablespace block size of 32k)
Each parameter specifies
the size of the cache for the corresponding block size.
Multiple Buffer Pools
You can configure the
database buffer cache with separate buffer pools that either keep data in the
buffer cache or make the buffers available for new data immediately after using
the data blocks. Particular schema objects (tables, clusters, indexes, and
partitions) can then be assigned to the appropriate buffer pool to control the
way their data blocks age out of the cache.
- The KEEP buffer
pool retains the schema object's data blocks in memory.
- The RECYCLE buffer
pool eliminates data blocks from memory as soon as they are no longer needed.
- The DEFAULT buffer
pool contains data blocks from schema objects that are not assigned to any
buffer pool, as well as schema objects that are explicitly assigned to the DEFAULT pool.
The initialization
parameters that configure the KEEP and RECYCLE buffer pools are DB_KEEP_CACHE_SIZE and DB_RECYCLE_CACHE_SIZE.
Redo Log
Buffer
The redo log buffer is a circular buffer in the SGA that holds
information about changes made to the database. This information is stored in redo entries. Redo entries contain the information necessary to reconstruct,
or redo, changes made to the database by
INSERT
, UPDATE
, DELETE
, CREATE
, ALTER
, or DROP
operations. Redo entries are used for database recovery, if
necessary.
Redo
entries are copied by Oracle server processes from the user's memory space to
the redo log buffer in the SGA. The redo entries take up continuous, sequential
space in the buffer. The background process LGWR writes the redo log buffer to
the active online redo log file (or group of files) on disk.
The contents of this
buffer are flushed:
·
Every three seconds
·
Whenever someone commits
a transaction
·
When its gets one third
full or contains 1MB of cached redo log data.
·
When LGWR is asked to
switch logs
The
initialization parameter
LOG_BUFFER
determines the size (in bytes)
of the redo log buffer. In general, larger values reduce log file I/O,
particularly if transactions are long or numerous. The default setting is
either 512 kilobytes (KB) or 128 KB times the setting of the CPU_COUNT
parameter, whichever is
greater
Automatic SGA Memory Management:
10g: SGA_TARGET
and PGA_AGGREGATE_TARGET
11g: Merory_target or (SGA_TARGET and
PGA_AGGREGATE_TARGET)
OLTP Systems:
Heavy OLTP: Larger SGA as larger memory is needed in
case of OLTP transactions
Heavy Batch: Smaller SGA
Note: To use automatic SGA memory management, the
parameter statistics_level must be set to TYPICAL or ALL.If statistics
collection is not enabled, the database will not have the historical
information needed to make the necessary sizing decisions.
Jadwal Tarung Cockfight SV388 17 Maret 2019 di Situs Judi Sabung Ayam Online Melalui Agen Resmi Taruhan Sabung Ayam Live Asli Thailand.
ReplyDeleteJadwal Tarung Cockfight SV388 17 Maret 2019 - Minggu, Batam 17 Maret 2019 – Pada Hari Tersebut Akan Di Laksanakan Berbagai Pertandingan Sabung Ayam Secara Live di Arena Sabung Ayam Thailand.
Untuk Info Lebih Lanjut Bisa Hub kami Di :
wechat : bolavita
line : cs_bolavita
whatsapp : +628122222995
BBM: BOLAVITA