一點ASMM總結

keeptrying發表於2012-05-08

OracleSGA記憶體結構:

Buffer Cache資料庫快取記憶體

    • Default Pool 預設的緩衝池,大小由DB_CACHE_SIZE決定
    • Keep Pool 持久的緩衝池,大小由DB_KEEP_CACHE_SIZE決定
    • Non standard pool 非標準塊標準池,大小由DB_nK_cache_size決定
    • Recycle pool 回收池,大小由db_recycle_cache_size決定

Shared Pool 共享池,大小由shared_pool_size決定

    • Library cache 俗稱的庫快取
    • Row cache 行快取,也叫字典快取

Java Pool java池,大小由Java_pool_size決定

Large Pool 大池,大小由Large_pool_size決定

Fixed SGA 固定的SGA區域,包含了Oracle內部的資料結構,一般被存放在第一個granule

 

 

通過SGA_TARGET引數手動配置ASMM。預設情況下,SGA_TARGET值為0,意味著ASMM關閉。要啟動ASMM初始化引數statistics_level必須設定為typicalALL,同時SGA_TARGET引數設定為非0值。

如果為SGA_TARGET指定了非0值,則下面五個池將被自動設定,相應的引數被視為自動的(Autotuned parameters):

Database buffer cache(default pool) db_cache_size

shared pool shared_pool_size

large pool large_pool _size

streams pool streams_pool_size

java pool java_pool_size

 

還有一部分組建需要手動設定(Manually Tuned SGA Parameters):

Log buffer log_buffer

Keep pool db_keep_cache_size

Recycle pool db_recycle_cache_size

Non standard pool db_nk_cache_size

Fixed SGA 固定的SGA區域,包含了Oracle內部的資料結構

 

 

 

 

實際上我們不能同時設定sga_target為非0值和statistics_levelBASIC,會報錯:

SYS@ tsid > alter system set statistics_level=basic;

alter system set statistics_level=basic

*

ERROR at line 1:

ORA-02097: parameter cannot be modified because specified value is invalid

ORA-00830: cannot set statistics_level to BASIC with auto-tune SGA enabled

==============================================================================================================================================

SGA_TARGET對自動配置元件和手動配置元件的影響:

SGA_TARGET0,意味著ASMM關閉,Autotuned parameters正常工作,即為這些組建分配相應的記憶體值。

SGA_TARGET為非0值,預設情況下Autotuned parameters值都為0,如果手動為這些引數分配了值,則這些值將作為最小值。例如,SGA_TARGET設定為8GBSHARED_POOL_SIZE設定為1GB,則ASMM演算法不會將shared pool縮減至小於1GB。下面的查詢可以檢視實際為這些組建分配的記憶體:

SYS@ tsid > select component,current_size/1024/1024 size_mb from v$sga_dynamic_components;

 

COMPONENT                                                           SIZE_MB

---------------------------------------------------------------- ----------

shared pool                                                             156

large pool                                                                4

java pool                                                                 4

streams pool                                                              0

DEFAULT buffer cache                                                     28

KEEP buffer cache                                                         0

RECYCLE buffer cache                                                      0

DEFAULT 2K buffer cache                                                   0

DEFAULT 4K buffer cache                                                   0

DEFAULT 8K buffer cache                                                   0

DEFAULT 16K buffer cache                                                  0

 

COMPONENT                                                           SIZE_MB

---------------------------------------------------------------- ----------

DEFAULT 32K buffer cache                                                  0

ASM Buffer Cache                                                          0

 

13 rows selected.

SGA_TARGET設定後,需要手動配置大小的SGA元件的空間值從SGA_TARGET中減去。例如,SGA_TARGET設定為8GBDB_RECYCLE_CACHE_SIZE設定為1GB,則為自動配置的元件(Autotuned parameters)空間值為7GB。同時,這7GB還包括剩餘那些沒有指定具體值的手動配置的SGA元件,但僅當那些自動配置元件分配完後,將剩餘的空間分配給這些元件。

 

 

SGA_TARGET值是動態的,可以增長到SGA_MAX_SIZE,在確保所有元件都達到最小值的條件下,可以降低。

SGA_MAX_SIZE是可以給SGA分配的最大記憶體值。它不能被改變,除非重啟資料庫。

修改SGA_TARGET的值,隻影響自動配置的元件。

如果增加了SGA_TARGET的值,增加的額外記憶體通過自動調整策略分配給自動配置元件。

如果減少了SGA_TARGET的值,自動記憶體調整策略將從自動配置元件中減去相應的記憶體。

 

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

相關文章