oracle 記憶體結構(二)

winston_DBA發表於2015-04-15

PGA:

1.PGA記憶體管理受初始化引數WORKAREA_SIZE_POLICY的控制(AUTO或MANUAL),可以在會話級修改。
2.PGA自動記憶體管理可以透過兩種方式實現:
2.1 透過設定PGA_AGGREGATE_TARGET初始化引數,告訴oracle最多可以使用多少PGA記憶體。
2.2 透過設定MEMORY_TARGET初始化引數,告訴oracle例項總共可用的SGA+PGA總和,由資料庫自己決定合適的PGA大小。
2.3 若透過手工PGA管理,需要設定SORT_AREA_SIZE  HASH_AREA_SIZE等引數大小。

SGA:

3.SGA中的大池(large pool),主要用途有3個:作為共享伺服器連線的會話記憶體(UGA);並行執行時,使用大池作為訊息緩衝區(request queue/response queue);RMAN備份使用大池作為磁碟IO緩衝區。
4.SGA中的固定SGA區,相當於SGA中的”自啟區“,oracle在內部需要利用該區來找到SGA的其他區。

REDO BUFFER:

5.redo buffer刷出的觸發條件:
每3秒一次;
無論何時有人提交請求時;
要求LGWR切換日誌檔案時;
redo buffer緩衝區1/3滿或者包含了1M資料時。
當髒塊要寫入資料檔案,但是與髒塊相關的redo日誌還沒寫入online redo log中,DBWn會觸發LGWR寫出redo快取內容。

LARGE POOL:
6.大池是一塊回收型的記憶體空間,用於大塊記憶體的空間分配。而共享池是保持型緩衝區,主要用於小塊記憶體空間的管理。

自動記憶體管理:
7.如果啟用自動記憶體管理,當資料庫例項重新啟動,例項是如何確定記憶體各個區域如何分配大小呢?原因就在於spfile中的_db_cache_size/_java_pool_size/_large_pool_size和_shared_pool_size等引數來”記憶“該資料庫例項的歷史大小。
8.在自動記憶體管理中,SGA_TARGET和PGA_AGGREGATE_TARGET代表SGA和PGA記憶體分配的下限值。而SGA_MAX_SIZE為SGA最大可用的記憶體大小,該值只是一個參考值,實際可能超過這個值。
9.不管是自動記憶體管理還是手工記憶體管理,各個池的記憶體都以顆粒(granule)單元來分配。顆粒大小可以為4/8/16M,顆粒的大小取決於SGA大小,SGA越大,顆粒越大,反之越小。顆粒大小可以透過v$sga_dynamic_components檢視中的granule_size來檢視。

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

相關文章