oracle AMM、ASMM区别以及相关用法

jakefei 2020-01-10

AMM:automatic memory management自动内存管理

手动设置

total memory size for this instance

maximum memory size for this instance

数据库自动分配

total sga size

sga component sizes

instance pga size

individual pga sizes

即让数据库完全管理SGA、PGA的大小,而对于管理员只需要设置一个总的大小(memory_target),数据库会动态的调整SGA、PGA的大小以及其中包含的各个组件大小,如Database buffer cache、Shared pool等等。

1.获取PGA分配的最大值

select value/1024/1024 || ‘M‘ from v$pgastat where name=‘maximum PGA allocated‘;

2.获取memory_target

计算公式:memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)

AMM内存调优

select * from v$memory_target_advice order by memory_size;

当MEMORY_SIZE_FACTOR为 1 时MEMORY_SIZE的值,即一般认为比较合理的MEMORY_TARGET的值。

ASMM:automatic shared memory management自动共享内存管理

手动设置

sga target size

sga maximum size

instance pga target size

数据库自动设置

sga component sizes

individual pga sizes

即设置一个SGA的目标值以及SGA的最大值,数据库来动态调整其中的各个组件,如Database buffer cache、Shared pool等等。

SGA_TARGET SGA设置目标值 初始值建议为:(total_mem * 0.7) * 0.8,后续需要定期分析系统做适应性调整
PGA_AGGREGATE_TARGET PGA设置目标值 (total_mem * 0.7) * 0.2,后续需要定期分析系统做适应性调整
SGA_MAX_SIZE SGA设置最大值 初始值建议为:(total_mem * 0.7) * 0.8,后续需要定期分析系统做适应性调整
DB_CACHE_SIZE 数据库缓存大小建议设置一个最小值,初始为SGA的50%左右,具体值需要根据物理内存大小、SGA大小而确定,后续需要定期分析系统做适应性调整
SHARED_POOL_SIZE 共享池大小 建议设置一个最小值,具体值需要根据物理内存大小、SGA大小而确定,后续需要定期分析系统做适应性调整
MEMORY_TARGET AMM管理设置内存大小 建议值0(11G及以后版本)

使用ASMM并禁用AMM

alter system set sga_target=2048M scope=spfile sid=‘*‘;

alter system set pga_aggregate_target=1024M scope=spfile sid=‘*‘;

alter system set memory_target=0 scope=spfile sid=‘*‘;

alter system set memory_max_target=0 scope=spfile sid=‘*‘;

alter system reset memory_max_target scope=spfile sid=‘*‘;

相关推荐