情景描述:
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%> ;