- 一、相关概念解析
AMM:automatic memory management(11.1才有的特性) 即让数据库完全管理SGA、PGA的大小,而对于管理员只需要设置一个总的大小(memory_target),数据库会动态的调整SGA、PGA的大小以及其中包含的各个组件大小,如Database buffer cache、Shared pool等等。
ASMM:automatic shared memory management,即让设置一个SGA的目标值以及SGA的最大值,数据库来动态调整其中的各个组件,如Database buffer cache、Shared pool等等。
AMM只需要设置一个memory_target,其中SGA、PGA数据库会根据运行的具体情况来调整这些大小,这样有一个好处即管理方便,经验不充足的人建议就设置AMM让数据库来管理各个内存空间大小的分配。 ASMM则是设置SGA_TARGET,让数据库来管理SGA中各个组件的大小。
PGA oracle强烈建议使用自动管理,在oracle 10g之前的版本,通过设置SORT_AREA_SIZE, HASH_AREA_SIZE, BITMAP_MERGE_AREA_SIZE 、 CREATE_BITMAP_AREA_SIZE这些参数达到手动控制的目的。 不过设置这些参数过于复杂,在此不做讨论。一般只需要设置PGA_AGGREGATE_TARGET参数即可达到自动管理的目的。
下图也比较详细的概括出了AMM、ASMM以及手动管理SGA的几种情况的区别,注意这几种方式PGA都是自动管理的。

- 二、启用AMM
1、启用sqlplus 以sysdba身份连接数据库,查看相关SGA_TARGET、PGA_AGGREGATE_TARGET的大小
[oracle@oracle11g ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on Thu May 22 15:59:37 2014
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining and Real Application Testing options
SQL> show parameter target
NAME &nb