轉載 11g 中MEMORY_MAX_TARGET

tom_xieym發表於2012-01-12

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/25850100/viewspace-714795/,如需轉載,請註明出處,否則將追究法律責任。

相關文章