Lin Hong's TECH Blog! 刀不磨要生锈,人不学习要落后 - Thinking ahead

[原创]Oracle 11g之后内存管理

2017-10-14

[原创]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 ~~~~


Similar Posts

Comments