9i 下sga_max_size 和SGA中各記憶體分配項的關係

tolywang發表於2006-09-29
----------------------------------------------------------------
SGA_MAX_SIZE
Parameter type
Big integer

Syntax
SGA_MAX_SIZE = integer [K | M | G]



Default value
Initial size of SGA at startup, dependent on the sizes of different pools in the SGA, such as buffer cache, shared pool, large pool, and so on.

Parameter class
Static

Range of values
0 to operating system-dependent

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

sga_max_size 是 static 引數型別
一直比較模糊的一個概念: SGA所包含的幾個記憶體分配項( db buffer, share pool , large pool , java pool 等 ) 記憶體值發生變化導致整個SGA和發生變化時, sga_max_size 會不會自動變化 ( 根據定義應該是自動發生變化的,當startup時候 ) ?

產生這個疑問是源於看了一本performance tuning的書,上面寫道:如果整個SGA記憶體區大小加和是 300 M , 而sga_max_size 被設定為 500m , 那麼oracle仍然從空閒記憶體中要求 500 m 的記憶體 。也就是說Oracle 資料庫啟動時會向作業系統要求和sga_max_size 引數值相等的記憶體, 而不是去看SGA各項記憶體的加和 ( 這樣可能造成浪費 ) 。

今天測試發現 sga_max_size 是隨SGA中各記憶體分配項( db buffer, share pool , large pool , java pool 等 ) 的總和變化而變化的。當SGA各項變化導致總和發生變化, 那麼sga_max_size 在重新啟動db時就會自動根據變化的記憶體值總和改變自己的值 。


從上面分析可以得出,sga_max_size 其實是不需要手動調整的 ( 如果記憶體變更後允許startup的話 ) 。 應該不太可能出現上面提到的sga_max_size 被設定為 500m , 而SGA各項記憶體值加和才 300 m .

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

相關文章