三、kernel shmmax 参数:
shmmax定义单个共享内存段的最大值,它的取值范围区间是[0,4294967295], 单位为byte,4294967295 bytes即4294967296 bytes(4GB)减去1。一般来说,它应该足够大以容下整个SGA,避免SGA使用多个共享内存段造成Oracle性能下降。
那么,将shmmax设置为最大值4294967295,使用 hugmemem 核心,Oracle 10g R2 版本,则理论上的SGA最大值为 3.5GB。
尽管用户进程可用的虚拟地址空间为4GB以及shmmax的最大值为4294967295,仍然可以通过使用内存文件系统(in-memory filesystem,比如tmpfs、ramfs以及hugetlbfs)打开Oracle的Very Large Memory (VLM)特性来扩展SGA超过4GB,比如6GB。但是这种方法有个不方便的地方是,用户不能够再使用Oracle 10g中的Automatic Shared Memory Management了。
总结一下:
SMP核心和hugemem核心的影响:
SMP核心:1GB+3GB,SGA最大值为1.75GB(3GB-1.25GB)
Hugemem核心:4GB+4GB , SGA最大值为2.75GB(4GB-1.25GB)
Oracle 不同版本的影响:
Oracle 10g Release 1:挂载SGA的起始地址为0×50000000(1.25GB)
Oracle 10g Release 2:挂载SGA的起始地址为0×20000000(0.5GB)
那么:
Hugemem 核心 + Oracle 10g Release 2 ,SGA最大值为3.5GB(4GB-0.5GB)
BTW:由于64位系统对应16EB寻址范围,而不是32位系统的4GB,所以想要获得更大SGA,性能更好的效果,应该优先使用 64 位系统,而不是通过32系统配合内存文件系统来配置了。
本文详细介绍了kernelshmmax参数对Oracle数据库SGA(System Global Area)大小的影响,以及不同Oracle版本和内核类型(SMP与hugemem)下的SGA最大值计算。在32位系统中,通过内存文件系统可以扩展SGA超过4GB,但在64位系统中可以获得更好的性能。文章还强调了64位系统对于更大SGA和性能提升的优势。
335

被折叠的 条评论
为什么被折叠?



