11g 中MEMORY_MAX_TARGET??

gholay發表於2014-03-02
11g 中新增MEMORY_MAX_TARGET 引數,此引數一出現就如在10g 中第一次出現SGA_MAX_SIZE 引數一樣給人以耳目一新的感覺。memory_max_target 是設定Oracle能佔OS多大的記憶體空間,一個是Oracle SGA 區最大能佔多大記憶體空間。無疑在11g Oracle 又向自動管理記憶體更進一步。




10g 的sga_max_size 是動態分配 Shared Pool Size,database buffer cache,large pool,java pool,redo log buffer 大小的,只是根據Oracle 執行狀況來重新分配SGA 各記憶體塊的大小。PGA在10g 中需要單獨設定.


11g MEMORY_MAX_TARGET 引數包含兩部分記憶體,一個 System global area (SGA),另一個 system global area(PGA)。很顯然在11g 中可已經將PGA 和SGA 一起動態管理了。


下面來看看在11g 中Memory_target 設定和不設定對SGA/PGA 的影響:


A:如果Memory_target 設定為非0 值


(下面有四種情況來對SGA 和PGA 的大小進行分配)
1:sga_target 和 pga_aggregate_target 已經設定大小如果Oracle 中
已經設定了引數sga_target 和pga_aggregate_target,則這兩個引數將各自被分配為 最小值最為它們的目標值。
Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小和 memory_max_size 一致。


2:sga_target 設定大小, pga_aggregate_target 沒有設定大小
那麼pga_aggregate_target初始化值=memory_target-sga_target
3:sga_target 沒有設定大小, pga_aggregate_target 設定大小 
那麼sga_target 初始化值=memory_target-pga_aggregate_target
4:sga_target 和 pga_aggregate_target 都沒有設定大小 Oracle 11g
中對這種sga_target 和pga_aggregate_target 都沒有設定大小的情況下,Oracle將對這兩個值沒有最小值和預設值。
Oracle 將根據資料庫執行狀況進行分配大小。


但在資料庫啟動是會有一個固定比例來分配:
sga_target =memory_target *60%
pga_aggregate_target=memory_target *40%


B:如果Memory_target 沒有設定或=0 (在11g 中預設為0)
11g 中預設為0 則初始狀態下取消了Memory_target 的作用,完全和10g 在記憶體管理上一致,完全向下相容。
(也有三種情況來對SGA 和PGA 的大小進行分配) 
1:SGA_TARGET設定值,則自動調節SGA 中的shared pool,buffer cache,redo log buffer,java pool,larger pool
等記憶體空間的大小。PGA 則依賴pga_aggregate_target 的大小。sga 和pga 不能自動增長和自動縮小。
2:SGA_target 和PGA_AGGREGATE_TARGET 都沒有設定
SGA 中的各元件大小都要明確設定,不能自動調整各組建大小。PGA不能自動增長和收縮。
3: MEMORY_MAX_TARGET 設定 而MEMORY_TARGET =0 這種情況先和10g 一樣,不做說明


在11g 中可以使用下面看各元件的值
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 1024M
memory_target big integer 1024M
pga_aggregate_target big integer 0
sga_target big integer 0




如果需要監視Memory_target 的狀況則可以使用下面三個動態試圖:
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
v$memory_target_advice


使用下面Command 來調節大小:
SQL>ALTER SYSTEM SET MEMORY_MAX_TARGET = 1024M SCOPE = SPFILE;
SQL>ALTER SYSTEM SET MEMORY_TARGET = 1024M SCOPE = SPFILE;
SQL>ALTER SYSTEM SET SGA_TARGET =0 SCOPE = SPFILE;
SQL>ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 0 SCOPE = SPFILE;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1098174/,如需轉載,請註明出處,否則將追究法律責任。

相關文章