oracle 11g的新特性:memory_target的一些解析

wangyiou1988發表於2014-02-25
     今天在分析資料庫時發現,資料庫的sga_target引數是0,pga_aggregate_target=0,但在OEM裡顯示竟然是自動記憶體管理,由於我對11G的新特性知之甚少,所以就小白了一下,查了一下竟然發現有個memery_target引數,這個引數現在已經凌駕於sga_target和pga_aggregate_target之上了。下面具體的說一說:
      11G還有一個新增的引數:memory_max_target:意思就是oracle 能佔系統多大的記憶體空間,它包含兩部分,SGA和PGA,11g裡透過這個引數已經可以把SGA和PGA一起動態的管理了。
    *** 如果把Memory_target設定為一個值的話,有四種情況:
     1.sga和pga已經設定了大小,則這兩個引數將各自被分配為最小值為他們的目標值即
   Memory_Target=SGA_TARGET + PGA_AGGREGATE_TARGET
這說明了什麼問題呢,說明sga和pga的大小不一定會按設定的來用。要以memory_target為準。
     2.sga設定了大小,pga沒有設定大小,那麼
   pga=memory_target -  sga
     3.sga沒有設定大小,pga 設定了大小,那麼
   sga=memory_target  - pga   (注意:這裡為了簡化,sga和pga分別代表sga_target 和pga_aggregate_target)
    4如果sga和pga都沒有設定大小的話,那麼oracle 會按照資料庫的運轉情況來自動分配大小,但是會有一個固定的比例來分配
    sga=memory_target * 60%
    pga=memory_target * 40%
   
     ***如果Memory_target 沒有設定或者等於0(11G 預設是0)
     11G中預設為0,那麼初始狀態下則取消了Memory_target的作用,這樣就和10G 在記憶體管理上相一致了
     sga_target,pga_arrgregate_target 設定了值之後,內部的shared_Pool啥的 就可以自動的調節大小,但是sga和pga不會增大或者變小,如果倆引數都沒有設定的話,那麼內部的這些shared_pool,java_pool就需要手工設定大小。
     注意:如果memory_max_target設定了大小,而memory_target沒有設定大小,那麼這個引數跟沒設一樣,又迴歸10G了。


如果要監視memory_target,可以使用下面三個動態檢視:
V$MEMORY_DYNAMIC_COMPONENTS
V$MEMORY_RESIZE_OPS
V$MEMORY_TARGET_ADVICE

如果要調節大小,後面也一定要加scope=pfile 才能調節,so,這個引數必須重啟才能生效。建議把
memory_max_target和memory_target設定成一樣,sga和pga設定成0.

 

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

相關文章