由于服务器上的物理内存除了要分配给Oracle以外,还要分配一些给操作系统以及其他的软件,因此,我们不能把内存全部分给Oracle。一般情况下,建议将物理内存的80%分配给Oracle。而在32位windows操作系统下,分配给Oracle的不能超过1.7G,即使你还有5G空在那里,你也只能干看着。
SGA大小= (物理内存 * 80%) * 50%
PGA大小= (物理内存 * 80%) * 20%
以上公式只是一个大的原则,没有任何一个系统的最优内存配置是相同的。即使是同一个系统,在不同的阶段,最优配置可能也不相同。
要想获得最优的配置,应该根据数据库的具体性能指标来调整各个内存参数的值。还好,Oracle 10g给我们提供了一些有用的建议,这些建议是通过实时抓取Oracle运行时的快照而生成德,因此非常符合实际情况。
由于SGA的大小主要是共享池和数据缓冲区,因此,Oracle没有对SGA的建议,只有对共享池和数据缓冲区的调整建议。
v_$shared_pool_advice
v_$db_cache_advice
v_$pga_target_advice