oracle AMM、ASMM区别以及相关用法
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=‘*‘;