最近在部署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