oracle 内存被分为 SGA(system global area)和 PGA(program global area)以及不常被提及的 UGA (User Global Area)和软件代码区域 Software code areas,那么历代 oracle 版本中内存都是如何管理的?今天就细数下内存管理的发展史 。
Oracle数据库内存管理
内存管理涉及根据数据库更改的要求为Oracle实例内存结构维护最佳大小。Oracle数据库根据与内存相关的初始化参数的设置来管理内存。内存管理的基本选项如下:
自动内存管理:
您可以指定实例内存的目标大小。数据库实例自动调整为目标内存大小,根据需要在SGA和实例PGA之间重新分配内存。
自动共享内存管理:
这种管理模式是部分自动化的。您可以为SGA设置目标大小,然后可以选择为PGA设置聚合目标大小或单独管理PGA工作区。
手动内存管理:
不需要设置总内存大小,而是设置许多初始化参数来单独管理SGA和实例PGA的组件;
如果使用数据库配置助手(DBCA)创建数据库并选择基本安装选项,则自动内存管理是默认设置。
Oracle 9i
PGA:支持手动、自动内存管理方式;
SGA:支持手动内存管理 。
Oracle 10g
10g 新特性:ASMM 自动共享内存管理(Automatic Shared Memory Management)
PGA:支持手动、自动内存管理方式;
SGA:支持手动、自动共享内存管理(ASMM)。
Oracle 11g
11g 新特性:AMM 自动内存管理(Automatic Memory Management)
PGA:支持手动、自动内存管理;
SGA:支持手动、自动共享内存管理(ASMM);
AMM:支持全局内存自动管理。