最近在部署ORACLE时,部署人员对PGA和SGA设置一筹莫展,其实可以用Oracle 11g的AMM的(默认是开启的)。我们在安装过程中,指定Oracle使用内存的百分比,这个取值就作为MEMORY_TARGET和MEMORY_MAX_TARGET的初始取值使用。如果这两个参数设置为非零取值,那么Oracle就是采用AMM管理策略的。同时,如果我们设置这两个参数为0,则AMM自动关闭。对应的SGA_TARGET、PGA_AGGREGATE_TARGET参数取值非零之后,Oracle自动退化使用ASMM特性。
数据库版本查看,
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE 11.2.0.1.0 Production
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production
查看参数,通过查看内存4个参数,可以看出为AMM
SQL> show parameter target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 24640M
memory_target big integer 24640M
parallel_servers_target integer 32
pga_aggregate_target big integer 0
sga_target big integer 0
如果为ASMM管理,则需要修改对应参数,如下:
修改系统参数,将sga和pga的target值设置为0,memory的target设置非0。
SQL> alter system set memory_max_target=300m scope=spfile;
System altered
SQL> alter system set memory_target=300m scope=spfile;
System altered
SQL> alter system set sga_target=0m scope=spfile;
System altered
SQL> alter system set sga_max_size=0 scope=spfile;
System altered
SQL> alter system set pga_aggregate_target=0 scope=spfile;
System altered