自动内存管理AMM

自动内存管理(Automatic Memory Management)是11G中推出的新功能,10G中只有自动SGA管理。启用了AMM只需设置内存的大小,就可以自动的在SGA和PGA之间分配内存,省去了管理设置SGA和PGA的麻烦。

AMM的相关参数:

MEMORY_TARGET:SGA和PGA可以使用的内存的总的大小,可以动态的设置,最大值不超过MEMORY_MAX_TARGET。

MEMORY_MAX_TARGET:可以使用的内存的最大值,这个是静态参数,要修改必须重启数据库。

SGA_TARGET:SGA目标内存大小,启用AMM后,这个参数应该设为0.

PGA_AGGREGATE_TARGET:PGA目标内存大小,启用AMM后,应该设为0.

 

开启AMM:

要想开启AMM,只需要设置MEMORY_TARGET,同时设置SGA_TARGET和PGA_AGGREGATE_TARGET都为0。如果没有设置MEMORY_MAX_TARGET,在启动后MEMORY_MAX_TARGET自动设置为MEMORY_TARGET大小。这样就可以自动的在SGA和PGA之间分配内存。

可以动态的修改MEMORY_TARGET大小,只要MEMORY_TARGET<=MEMORY_MAX_TARGET即可。

 

例外的情况:

1.设置了MEMORY_TARGET,又设置了SGA_TARGET和PGA_AGGREGATE_TARGET

此时SGA_TARGET+ PGA_AGGREGATE_TARGET要<=MEMORY_TARGET。

SGA_TARGET和PGA_AGGREGATE_TARGET分别为SGA的PGA大小的下限。

如MEMORY_TARGET=1G,SGA_TARGET=500M,PGA_AGGREGATE_TARGET=300M,则SGA下限为500M,PGA下限为300M,以此为根据在SGA和PGA之间分配内存。

 

2.如果没设置MEMORY_TARGET,设置了SGA_TARGET和PGA_AGGREGATE_TARGET

这时开启了自动共享内存管理(SGA自动管理),SGA内各个组件之间自动的分配内存

 

3.如果啥都没有设置,也是可以启动的,按照默认的情况,把内存的40%分给ORACLE,然后把60%分给SGA,把40%分给PGA。

 

 

如果内存充足,建议开启AMM,省去了很多工作。

 

 

 

 

 

 

 

你可能感兴趣的:(oracle,oracle,AMM)