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

myhuaer發表於2009-04-10

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 poolredo log buffer 大小的,只是根據Oracle 執行狀況來重新分配SGA 各記憶體塊的大小。PGA10g 中需要單獨設定.

 

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 的大小進行分配)

      1sga_target pga_aggregate_target 已經設定大小如果Oracle

已經設定了引數sga_target pga_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_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 的大小進行分配)   

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

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

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

相關文章