一、
Oracle
的三种内存管理方式
oracle
内存管理有三种方式,每一个
instance
只能够选择一种。这三种管理方式分别是
AMM
自动内存管理(
Automatic Memory Management
)、
ASSM
自动共享内存管理(
Auto Shared Memory Management
)、
msmm
手动共享内存管理(
Manual Shared Memory Management
)。
本文针对AMM
自动内存管理进行详细原理阐述。
二、
AMM
原理阐述
自动内存管理automatic memory management
(以下均称
AMM
)是
oracle 11g
新推出的新特性,意在对实例中的
PGA
和
SGA
进行自动管理。
AMM
是自动共享内存管理
automatic shared memory management
(
ASMM
)的拓展。
1.
在AMM
中涉及到的参数
- memory_max_target
- memory_target
- sga_max_size
- sga_target
- pga_aggregate_target
2.
AMM
的启用
方式一
:DBCA
图形界面下,要选择
AMM
自动内存管理,
step9
选择
use Automatic Memory Management
即可。如下图
方式二
:可以通过以下两个参数之一启用
- memory_target
:定义
sga
和
pga
总和的上限
- memory_max_taregt
:定义
memory_target
的上限
假设memory_max_target
设置为
1400m
,
memory_target
设置为
1000m
,那么只有
1000m
会被用在
instance
中,剩下的
400m
会被
oracle
用做储备。因为
memory_max_target
已经指定了,所以可以动态的修改
memory_target
参数,而不需要重启数据库。
如果memory_max_target
和
memory_target
相同,或者
memory_max_target
没有设置,那么
memory_target
就不能动态增长,并且修改后需要重启
instance
。
memory_max_target
将一直在参数文件中显式设置,或者被内存管理后台进程隐式设置。