Automatic Shared Memory Management (ASMM)
When sga_target is set to a non-zero
value to enable ASMM, the auto tuned SGA parameters are set to
zero values. These components are then automatically sized by
ASMM. If the four parameters are set to non-zero values along
with ASMM, the specified values are considered as a lower limit
by the auto-tuning algorithm. Whenever an auto tuned component
is resized to a larger value, the memory is taken from another
auto-tuned component to supplement the change, while the
manually tuned components are left untouched.
The sga_target is a dynamic
parameter and is set from OEM or with the ALTER SYSTEM command.
The sga_target can be raised up to sga_max_size.
It can be reduced until the auto-tuned components are reduced to
their minimums. Any change in sga_target only affects the
size of the auto-tuned components.
Manually sized SGA components are tuned by
the user. The total size of manual SGA parameters is subtracted
from the sga_target to be allotted to auto tuned
components.
Some of the manually sized SGA components
are:
Keep/Recycle buffer which are controlled by
db_keep_size and db_recycle_cache_size;
multiple block size caches
such as db_nk_cache_size
where n=2, 4, 8, 16, 32;
Streams Pool which is
controlled by
streams_pool_size;
log_buffer, and etc. The memory consumed by these
manually sized components reduces the amount of memory available
for the automatic tuning of automatically sized components.