Oracle
Oracle 自動記憶體管理 - SGA_MAX_SIZE
使用自動記憶體管理時,SGA_MAX_SIZE 應該是什麼值?應該是0嗎?這些是我目前的設置,我不確定是保留 SGA_MAX_SIZE 還是將其設置為 0。
memory_max_target 2147483648 memory_target 2147483648 pga_aggregate_target 0 sga_max_size 1610612736 sga_target 0
甲骨文 11gR2
文件
sga_max_size
說:在 64 位平台和非 Windows 32 位平台上,當指定
MEMORY_TARGET
或時MEMORY_MAX_TARGET
,預設值SGA_MAX_SIZE
設置為兩個參數中的較大者。並且根據11g (Doc ID 443746.1) 上的 Oracle 文件 Automatic Memory Management (AMM),如果您同時擁有
sga_target
並未pga_aggregate_target
設置,則:如果兩者都沒有設置,它們將自動調整,沒有任何最小值或預設值。我們將製定一個策略,在初始化期間將由 MEMORY_TARGET 參數設置的總記憶體以固定比例分配給 SGA 和 PGA。政策是在啟動時將 60% 給 SGA,40% 給 PGA。
因此,如果您希望 Oracle 完全控制 SGA,最簡單的做法是重置它並應用預設值:
SQL> alter system reset sga_max_size scope=spfile;
(並重新啟動。)
如果您想要 AMM 但想要 SGA 或 PGA(或兩者)的最小值,請通過設置相應的
_target
參數來實現:前面的步驟 [設置 AMM ] 指示您將
SGA_TARGET
和PGA_AGGREGATE_TARGET
設置為零,以便根據需要調整 SGA 和實例 PGA 的大小,不受限制。您可以省略將這些參數值設置為零的語句,並將其中一個或兩個值保留為正數。在這種情況下,這些值充當 SGA 或實例 PGA 大小的最小值。無論您做什麼,都不要將 PGA 或 SGA 目標或最大大小設置為大於記憶體目標。這會阻止實例啟動。