11g MEMORY_TARGET 引數對SGA 和PGA的影響

chenfeng發表於2016-01-15
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

    (下面有四種情況來對SGAPGA的大小進行分配)

    1sga_targetpga_aggregate_target已經設定大小如果Oracle

已經設定了引數sga_targetpga_aggregate_target,則這兩個引數將各自被分配為最小值最為它們的目標值。

Memory_Target =SGA_TARGET+PGA_AGGREGATE_TARGET ,大小和  

          memory_max_size一致。

      2sga_target 設定大小,pga_aggregate_target 沒有設定大小

          那麼pga_aggregate_target初始化值=memory_target-sga_target

      3sga_target 沒有設定大小,pga_aggregate_target 設定大小

          那麼sga_target初始化值=memory_target-pga_aggregate_target

      4sga_target pga_aggregate_target 都沒有設定大小Oracle 11g

中對這種sga_targetpga_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在記憶體管理上一致,完全向下相容。

  (也有三種情況來對SGAPGA的大小進行分配)  

       1SGA_TARGET設定值,則自動調節SGA中的shared pool,buffer cache,redo log buffer,java pool,larger pool

           等記憶體空間的大小。PGA則依賴pga_aggregate_target的大小。sga pga不能自動增長和自動縮小。

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

相關文章