About Automatic Shared Memory Management
Automatic Shared Memory Management simplifies SGA memory management. You specify the total amount of SGA memory available to an instance using theSGA_TARGET
initialization parameter and Oracle
Database automatically distributes this memory among the various SGA components to ensure the most effective memory utilization.
When automatic shared memory management is enabled, the sizes of the different SGA components are flexible and can adapt to the needs of a workload without requiring any additional configuration. The database automatically distributes the available memory among the various components as required, allowing the system to maximize the use of all available SGA memory.
If you are using a server parameter file (SPFILE
), the database remembers the sizes of the automatically tuned SGA components across instance shutdowns. As a result, the database instance does not need to learn the characteristics
of the workload again each time the instance is started. The instance can begin with information from the previous instance and continue evaluating workload where it left off at the last shutdown.
Dynamic Modification of SGA_TARGET
The SGA_TARGET
parameter can be dynamically increased up to the value specified for the SGA_MAX_SIZE
parameter,
and it can also be reduced. If you reduce the value of SGA_TARGET
, the system identifies one or more automatically tuned components for which to release memory. You
can reduce SGA_TARGET
until one or more automatically tuned components reach their minimum size. Oracle Database determines the minimum allowable value for SGA_TARGET
taking
into account several factors, including values set for the automatically sized components, manually sized components that use SGA_TARGET
space, and number of CPUs.
The change in the amount of physical memory consumed when SGA_TARGET
is modified depends on the operating system. On some UNIX platforms that do not support dynamic shared memory, the physical memory in use by the SGA is
equal to the value of the SGA_MAX_SIZE
parameter. On such platforms, there is no real benefit in setting SGA_TARGET
to a value smaller than SGA_MAX_SIZE
.
Therefore, setting SGA_MAX_SIZE
on those platforms is not recommended.
On other platforms, such as Solaris and Windows, the physical memory consumed by the SGA is equal to the value of SGA_TARGET
.
For example, suppose you have an environment with the following configuration:
-
SGA_MAX_SIZE
= 1024M -
SGA_TARGET
= 512M -
DB_8K_CACHE_SIZE
= 128M
In this example, the value of SGA_TARGET
can be resized up to 1024M and can also be reduced until one or more of the automatically sized components reaches its minimum size. The exact value depends on environmental factors
such as the number of CPUs on the system. However, the value of DB_8K_CACHE_SIZE
remains fixed at all times at 128M