【ORA-4030/4031】自動記憶體管理AMM中的ORA-4030/4031問題

恩強Boy發表於2020-08-17

AMM 自動記憶體管理中, Oracle 可以自動的調節 PGA SGA 。那 oracle 怎麼會耗盡記憶體呢?

ORA-4030 錯誤發生是因為沒有足夠的記憶體給 PGA,ORA-4031 錯誤發生是因為沒有足夠的記憶體給 SGA

如果分配的SGA 消耗完,整個 PGA (空閒記憶體)也消耗完,然後記憶體耗盡, ORA-4030 ORA-4031 問題就會出現,這也就意味著 memory_target 的大小不夠大。

SGA 上設定以下限制可能會導致記憶體短缺:

1 )如果 sga_max_size 設定了,這是 SGA 的上限,如果記憶體程式需要更多的 SGA ,那系統就會報 ORA-4031 錯誤。

2 )如果 sga_target 設定了,這是 SGA 的下限,如果進行需要更多的私有記憶體( PGA ),那麼就會報 ORA-4030 錯誤。但如果程式需要記憶體的是 PL/SQL ,那麼它可以從伺服器中獲得更多額外的記憶體。

設定sga_target 仍然是 Oracle 建議的,因為這樣記憶體總會給出一部分給 SGA 使用。

對於ORA-4030, 也有可能是作業系統的限制引起的。尤其是, 32-bit 平臺的 4G 記憶體限制,以及 UNIX 平臺的 ulimit 設定,後者限制程式可以訪問的最大記憶體。

 


---- end ----


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

相關文章