SGA_TARGET与SHMMAX关系



参考原始:

Relationship Between SGA_TARGET and SHMMAX (文件 ID 1527109.1)

申请:

Oracle Database - Enterprise Edition - Version 10.1.0.2 to 11.2.0.3 [Release 10.1 to 11.2]

Information in this document applies to any platform.



目的:

解释了參数文件里的參数SGA_TARGET 和 操作系统内核參数SHMMAX 之间的关系



Q1)SHMMAX 限制是怎么影响SGA_TARGET的?

A1)SHMMAX 是以byte为单位的单个共享内存段的最大大小(shared memory segment)。理想情况下,我们能够通过设置 SGA_TARGET < SHMMAX 来让 SGA_TARGET 与一个共享内存段相匹配(fit in)。

假设SGA_TARGET > SHMMAX。 oracle 会尝试使用连续的多个共享内存段 来与 SGA_TARGET 相匹配,假设该尝试失败,oracle 会使用非连续的多个共享内存段,此时,Oracle 不得不在已使用空间中抓取(grab)空暇的内存段



Q2)假设我设置SHMMAX 为16GB,这个16GB是 SGA_TARGET 同意设置的最大值么?

A2)与上一个问题一样,请注意:Oracle不推荐SHMMAX 使用如此大的值。请见例如以下的文章:

    Maximum SHMMAX values for Linux x86 and x86-64 (Doc ID 567506.1)

    

Q3)若是我须要在一个db server上执行多个database。每个database的sga是12GB。我如何设置SHMMAX参数?

A3)在这种情况下,你需要确保:设定SHMMALL (代替SHMMAX )的值至 以上的 整个database向上sga之和值。SHMMALL 它是一个共享内存段(同page单位)总大小。这里要注意的是:SHMMAX 这是 bytes单位,和 SHMMALL 这是pages单位

05-08 15:08