当前位置: 代码迷 >> 综合 >> 添加SGA后启动数据库报ORA-27102: out of memory
  详细解决方案

添加SGA后启动数据库报ORA-27102: out of memory

热度:83   发布时间:2023-12-14 07:15:57.0

centos6.2 X64    oracle10.2  内存24G

 

sql>alter system set sga_max_size=8192M scope=spfile;

sql>alter system set sga_target=8192M scope=spfile;

sql>shutdown immediate;

sql>startup

ORA-27102: out of memory
Linux-x86_64 Error: 28: No space left on device

 

 

经查,发现是一个参数设置的不对/etc/sysctl.conf的shmall

shmall这个参数设置的值太小就会报ORA-27102: out of memory

对于32位系统,一页=4k,也就是4096字节。
kernel.shmall = 2097152  就是 2097152*4k/1024/1024 = 8G 就是说可用共享内存一共 8G

设置的一般规律

kernel.shmall = 2097152    ---内存8G
kernel.shmall = 4194304    ---内存16G

kernel.shmall = 6291456 ---内存24G
kernel.shmall = 8388608    ---内存32G

我改的kernel.shmall = 41943040  ,结果好了,这样可以会留下什么后遗症


这里,对每个参数值做个简要的解释和说明。
    (1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。
    (2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
    (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
    (4)sem:该参数表示设置的信号量。
    (5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。


    修改好内核以后,执行下面的命令使新的配置生效。
# /sbin/sysctl -p

  相关解决方案