Oracle 11g AMM与ASMM切换(一)

2014-11-24 17:24:16 · 作者: · 浏览: 0

在10g时,Oracle推出了ASMM(Automatic Shared Memory Management),实现了Oracle SGA和PGA内部结构的自调节。进入11g之后,AMM(Automatic Memory Management)实现了参数MEMORY_TARGET,将SGA和PGA的规划全部统筹起来对待。


默认情况下,Oracle 11g是使用AMM的。我们在安装过程中,指定Oracle使用内存的百分比,这个取值就作为MEMORY_TARGET和MEMORY_MAX_TARGET的初始取值使用。如果这两个参数设置为非零取值,那么Oracle就是采用AMM管理策略的。


同时,如果我们设置这两个参数为0,则AMM自动关闭。对应的SGA_TARGET、PGA_AGGREGATE_TARGET参数取值非零之后,Oracle自动退化使用ASMM特性。


--------------------------------------分割线 --------------------------------------


--------------------------------------分割线 --------------------------------------


本篇简单介绍一下AMM和ASMM的相互切换。


1、实验环境介绍


我们选择11.2.0.3进行试验,当前状态为ASMM。


SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - Production

PL/SQL Release 11.2.0.3.0 - Production

CORE 11.2.0.3.0 Production





当前MEMORY_TARGET设置为零,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 0

memory_target big integer 0

parallel_servers_target integer 16

pga_aggregate_target big integer 108M

sga_target big integer 252M





2、从ASMM到AMM



在11g中,如果使用ASMM,对应的内存共享段是真实的共享段。





[oracle@SimpleLinux ~]$ ipcs -m



------ Shared Memory Segments --------

key shmid owner perms bytes nattch status


0x00000000 32768 oracle 640 4194304 32


0x00000000 65537 oracle 640 260046848 32


0x01606d30 98306 oracle 640 4194304 32


下面进行参数的调整,这里笔者有一个建议,很多时候启动umount阶段故障都是由于不当的参数修改造成的。在进行参数修改之前,可以使用create pfile进行一下参数备份,可以加快故障出现时候的系统修复速度。

SQL> show parameter spfile

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

spfile string /u01/app/oracle/dbs/spfileora11g.ora



SQL> create pfile from spfile;

Done

修改系统参数,将sga和pga的target值设置为0,memory的target设置非0。注意,这个过程很多参数是静态的参数,可以都在spfile可见性中进行修改,之后重启服务器生效。

SQL> alter system set memory_max_target=360m scope=spfile;

System altered



SQL> alter system set memory_target=360m 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

重新启动数据库服务器,查看参数配置。

SQL> conn / as sysdba

Connected.

SQL> startup force

ORACLE instance started.



Total System Global Area 263651328 bytes

Fixed Size 1344284 bytes

Variable Size 176164068 bytes

Database Buffers 83886080 bytes

Redo Buffers 2256896 bytes

Database mounted.

Database opened.



SQL> show parameter target

NAME TYPE VALUE

------------------------------------ ----------- ------------------------------

archive_lag_target integer 0

db_flashback_retention_target integer 1440

fast_start_io_target