一 问题描述
无法启动数据库,报错:
二 排查思路
1.确保sga_target,sga_max_size比可用物理内存小
2.检查kernel.shmmax,kernel.shmall是否设置得太小
一般出现ORA-27102:out of memory,是/etc/sysctl.conf种内核参数kernel.shmmax,kernel.shmall设置得小了。
设置原则:
建议设置kernel.shmmax为物理内存的一半;
建议设置kernel.shmall为物理内存/pagesize;
--pagesize这样查:getconf PAGESIZE
确保kernel.shmmax比rac集群种所有实例的sga_max_size/sga_target的和要大;
3.检查是否设置了lock_sga=TRUE,如果设置为TRUE的话,需要调大操作系统对oracle用户
max locked memory的大小。 该值默认是64K:
我这里前两项都是没问题的,第3项有问题。
三 解决办法
(1) 方法一
vi /etc/security/limits.conf,新增如下配置:
oracle hard memlock 237621175
oracle soft memlock 237621175
--注意,这里的大小是服务器内存的大小,单位是KB,我这里是200多G
修改完文件后,再次查看,大小变了:
(2) 方法二
将lock_sga=TRUE改为lock_sga=FALSE,设置memory_target大小。这样就不用改/etc/security/limits.conf文件了,还能使用memory_target自动调整内存的特性
ORA-27102:out of memory Linux-x86_64 Error: 12: Cannot allocate memory的处理_普通网友的博客-CSDN博客