SGA = System Global Area ( shared memory structures ); // maintains control information for oracle instance
Oracle Instance = SGA + Oracle Processes ( includes background process, server process ... );
for each instance in database
allocate only one ( SGA );
SGA size = sum ( DB_CACHE_SIZE, // caching disk blocks
LOG_BUFFER, // allocate for redo log buffer
SHARED_POOL_BUFFER, // allocate SQL & PL/SQL execution
LARGE_POOL_SIZE, // large pool buffer
JAVA_POOL_SIZE // Java Object and Java execution memory
);
while ( allocate SGA || delocate SGA)
assign by Granules ( size );
sizeof( Granules ) = depend on ( SGA_size );
SGA Used Ratio = used Granules / total Granules;
SGA_TARGET = set only at startup(); // automatically allocate free memory
SGA_TARGET.allocate flexibly ( shared pool, Java pool, large pool, buffer cache, streams pool);
manual manage SGA components =
Keep/Recycle buffer caches ( DB_KEEP_CACHE_SIZE
and DB_RECYCLE_CACHE_SIZE );
Additional buffer caches for non-standard block sizes ( DB_
n
K_CACHE_SIZE
, n
= {2, 4, 8, 16, 32});
where
amount memory for auto adjustment = ( SGA_TARGET - manual managed memory);
if ( SGA_TARGET > SGA_MAX_SIZE )
SGA_MAX_SIZE = SGA_TARGET;
if ( shutdown instance )
auto tuned memory distributed sizes -> SPFILE;
else
new memory distributed learning;
when ( restart instance )
SPFILE -> memory ditributed sizes;
for each PGA for one instance
PGA -> ( ORACLE PROCESS || SERVER PROCESS || BACKGROUND PROCESS );
转载于:https://blog.51cto.com/tuning/518264