情景描述:
redhat 7.6启用 hugepage (150G),修改SGA为140G 后启动实例报错,内容如下:
ORA-04031: unable to allocate 32 bytes of shared memory ("shared pool","V$JAVA_POOL_ADVICE","KGLS^6ea2e546","kglHeapInitialize:temp")
问题检查:
1.内核参数分配是否合理:
# sysctl -p|grep shm
kernel.shmmni = 4096
kernel.shmall = 1073741824
kernel.shmmax = 4398046511104
vm.hugetlb_shm_group = 54321
shmall=shmmax/shmmni
2.检查limit.conf中memlock的限制
cat /etc/security/limits.conf
oracle soft memlock unlimited
oracle hard memlock unlimited
grid soft memlock unlimited
grid hard memlock unlimited
3.检查SGA中shared_pool的大小(应当为SGA_MAX_SIZE的15%)--经检查发现Shared_pool不足15%
需要注意的是,查看db_cache_size是否为SGA的10%,另外buffer cache的内存结构也会消耗shared_pool
解决:修改shared_pool_size
alter system set shared_pool_size=<sga_max_size*15%> ;
本文描述了在Redhat7.6系统上,尝试将SGA设置为140G并启用150G hugepages时,启动Oracle实例遇到ORA-04031错误的情况。通过检查内核参数、memlock限制和SGA中shared_pool的大小,最终发现shared_pool不足15%,并提供了调整shared_pool_size的方法。
1322

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



