自动内存管理(Automatic Memory Management)是11G中推出的新功能,10G中只有自动SGA管理。启用了AMM只需设置内存的大小,就可以自动的在SGA和PGA之间分配内存,省去了管理设置SGA和PGA的麻烦。
如果使用 AMM,则对 PGA 不用操心。如果要做到精细控制而切换到自动 PGA 内存管理模式,需要设定WORKAREA_SIZE_POLICY = AUTO(默认即为 AUTO),然后需要指定 PGA_AGGREGATE_TARGET 的值。如需要精确控制PGA,则 WORKAREA_SIZE_POLICY = MANUAL
前提是 WORKAREA_SIZE_POLICY = manual ,然后分别指定 SORT_AREA_SIZE 等 PGA 相关的参数。估计现在没有人干这个吃力不讨好的事情了。这个模式大可以忽略。
如果初始化参数 LOCK_SGA = true(默认false) ,则 AMM 是不可用的。
[root@hong ~]# su - oracle
[oracle@hong ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.4.0 Production on Thu Sep 15 02:39:35 2016
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Connected to an idle instance.
SQL> startup
ORACLE instance started.
Total System Global Area 939495424 bytes
Fixed Size 2258840 bytes
Variable Size 595593320 bytes
Database Buffers 335544320 bytes
Redo Buffers 6098944 bytes
Database mounted.
Database opened.
SQL> show parameter sga_target
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
sga_target big integer 0
SQL> show parameter pga
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
pga_aggregate_target big integer 0
SQL> alter system set sga_target=500M scope=spfile;
System altered.
SQL> alter system set pga_aggregate_target=200M scope=spfile;
System altered.
SQL> alter system set memory_target=0 scope=spfile;
System altered.
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 200M
sga_target big integer 500M
((((((上述三个参数sga_target,pga_aggregate_target,memory_target,相互影响他们的参数值,所以更改此类参数需加scope=spfile,不加默认scope=both,但是查看参数值时并未生效;启动内存SGA,PGA分别自动管理,顺序为:alter system set sga_target=500m scope=spfile;alter system set pga_aggregate_target=200m scope=spfile; alter system set memory_target=0 scope=spfile;)))))
——重置内存自动管理memory_target:
SQL> alter system set memory_target=900M scope=spfile;
System altered.
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 939495424 bytes
Fixed Size 2258840 bytes
Variable Size 671090792 bytes
Database Buffers 260046848 bytes
Redo Buffers 6098944 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 integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 900M
memory_target big integer 900M
parallel_servers_target integer 16
pga_aggregate_target big integer 200M
sga_target big integer 500M
SQL> alter system set pga_aggregate_target=175M;
System altered.
SQL> alter system set sga_target=300M;
System altered.
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 900M
memory_target big integer 900M
parallel_servers_target integer 16
pga_aggregate_target big integer 175M
sga_target big integer 300M
SQL>
(内存自动管理生效,只要memory_target有值就以它为准)
参考网上资料,特此感谢!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31397003/viewspace-2126700/ ,如需转载,请注明出处,否则将追究法律责任。