Oracle 內存一 手動內存管理,自動內存管理

oracle的內存分爲兩個部分。一個是SGA(system global area),一個是PGA(program global area)。所謂的內存管理,就是對這兩部分區域進行管理。oracle的內存管理經理了如下發展:

oracle 9i   PGA自動管理,SGA手動管理

oracle10g PGA自動管理,SGA自動管理

oracle11g PGA,SGA統一自動管理


先看9i時期的PGA自動管理,SGA手動管理

這時期PGA管理有兩個選擇,手動和自動。

手動時,設置WORKAREA_SIZE_POLICY爲MANUAL, 設置各種*_AREA_SIZE的值比如SORT_AREA_SIZE_HASH_AREA_SIZE就可以實現手動PGA管理。

自動時,設置WORKAREA_SIZE_POLICY爲AUTO,設置PGA_AGGREAGATE_TARGET的值,則爲自動PGA管理。


這時期SGA的管理只可以手動管理,但是相比之前有了進步,可以動態的管理。


再看10g時期的PGA自動管理,SGA自動管理

這時期PGA和9i一樣,都可以手動和自動。

這時期的SGA則有了進步,可以手動管理,也增加了自動管理的選擇。

設置SGA_TARGET,就可以實現自動SGA管理。


現在看11g時期的PGA,SGA統一自動管理

這時期的內存管理向前兼容。

PGA可以手動,自動管理

SGAK也可以手動,自動管理

但是有了一個更方便的特性,就是把PGA,SGA的自動整合到一起,通過MEMORY_TARGET來管理。這時有了兩個參數MEMORY_TARGET,MEMORY_MAX_TARGET.有了這兩個參數,就可以把PGA,SGA作爲一個整體管理。




有一些要注意的地方是

1.如果設置了MEMORY_TARGET的同時還設置了SGA_TARGET,PGA_TARGET 怎麼辦呢?這時候,SGA_TARGET和PGA_TARGET的值如果小於MEMORY_TARGET,那麼oracle就會把他們作爲SGA,和PGA的最小值,如果他們比MEMORY_TARGET還大,那麼oracle就會報錯。

2.PGA是跟每一個oracle server 進程相關的,所以WORKAREA_SIZE_POLICY應該是可以設置在session級別,也可以設置在system級別。

3. 幾個視圖比較有用,V$MEMORY_DYNAMIC_COMPONENTS會展示動態調整的內存組件大小。 V$MEMORY_RESIZE_OPS展示了最近的800條SGA調整記錄。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章