11g的MEMORY_TARGET和MEMORY_MAX_TARGET

jelephant發表於2014-03-18

MEMORY_MAX_TARGET 是設定Oracle能佔OS多大的記憶體空間
SGA_MAX_SIZE是Oracle SGA 區最大能佔多大記憶體空間

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 引數包含SGA和PGA兩部分。

如果Memory_target 設定為非0 值
1、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 將根據資料庫執行狀況進行分配大小,但在資料庫啟動是會有一個固定比例來分配:
sga_target =memory_target *60%
pga_aggregate_target=memory_target *40%


如果Memory_target 沒有設定或=0
11g 中預設為0 則初始狀態下取消了Memory_target 的作用,完全和10g 在記憶體管理上一致,完全向下相容。
1、SGA_TARGET設定值
自動調節SGA 中的shared pool,buffer cache,redo log buffer,java pool,larger pool等記憶體空間的大小。PGA 則依賴pga_aggregate_target 的大小。
2、SGA_target 和PGA_AGGREGATE_TARGET 都沒有設定
SGA 中的各元件大小都要明確設定,不能自動調整各元件大小。PGA不能自動增長和收縮



自動記憶體管理是用兩個初始化引數進行配置的:
  MEMORY_TARGET:動態控制SGA和PGA時,Oracle總共可以使用的共享記憶體大小,這個引數是動態的,因此提供給Oracle的記憶體總量是可以動態增大,也可以動態減小的。它不能超過MEMORY_MAX_TARGET引數設定的大小。預設值是0。
  MEMORY_MAX_TARGET:這個引數定義了MEMORY_TARGET最大可以達到而不用重啟例項的值,如果沒有設定MEMORY_MAX_TARGET值,預設等於MEMORY_TARGET的值。
  使用動態記憶體管理時,SGA_TARGET和PGA_AGGREGATE_TARGET代表它們各自記憶體區域的最小設定,要讓Oracle完全控制記憶體管理,這兩個引數應該設定為0。

memory_max_target是一個非動態引數,不能在memory範圍動態改變,只能透過指明 scope=spfile這個條件來達到資料庫在下次啟動後讓改變生效的目的。
但是memory_target這個引數是可以動態調節的...也就是說不需要重新啟動DB,就可以讓其生效

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

相關文章