[原创]Oracle 11g之后内存管理
Oracle 11gR之后内存管理的初始化参数追加了以下参数:
MEMORY_TARGET
MEMORY_MAX_TARGET
MEMORY_TARGET 表示Oracle可以使用OS物理内存的最大值 MEMORY_MAX_TARGET 表示 DBA可以为database分配内存的最大值
MEMORY_TARGET和MEMORY_MAX_TARGET 关系:
-
1.MEMORY_MAX_TARGET >= MEMORY_TARGET
-
2.MEMORY_TARGET设置了,MEMORY_MAX_TARGET没设置的话,oracle会默认MEMORY_MAX_TARGET = MEMORY_TARGET 设置指定了
-
3.MEMORY_TARGET和MEMORY_MAX_TARGET 都没设置的话,oracle会默认MEMORY_MAX_TARGET=0设置
-
4.MEMORY_MAX_TARGET > 0 设置了,MEMORY_TARGET没有设置的话,DBA可以动态设置MEMORY_TARGET的值
SGA: 共享数据缓存区 PGA: 程序全局缓冲区
SGA → SGA_TARGET PGA → PGA_AGGREGATE_TARGET
Memory_Target和SGA/PGA的关系:
另外注意:
memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)
设置指定了 memory_target 大小后,sga和pga可以自动伸缩调整大小
Memory_Target > 0 设置之后:
-
1.sga_target 和 pga_aggregate_target 设置的话,这两个参数作为最小值分配各自内存(Memory_Target = sga_target + pga_aggregate_target)
-
2.sga_target 设置了,pga_aggregate_target 没设置的话,pga_aggregate_target = Memory_Target - sga_target 默认设置
-
3.sga_target 没设置,pga_aggregate_target 设置的话,sga_target = Memory_Target - pga_aggregate_target 默认设置
-
4.sga_target 和 pga_aggregate_target 都没有设置,Oracle不会对这两个值进行最小值和默认值设置,按照运行情况进行分配,但启动时候 有个6:4的分配
~~~ LinHong 2017/10/14 ~~~~