今天安装oracle的时候,ok没有问题安装上去,但是重启oracle的时候遇到如下的错误:
SQL> startup;

ORA-27102: out of memory

OSD-00022: Message 22 not found;  product=RDBMS; facility=SOSD

O/S-Error: (OS  Not enough storage is available to process this command.

很是奇怪,经过网上查找的方法解决。具体的方法来分享一下
发现是一个参数的设置的不对/etc/sysctl.conf的shmmax
shmmax这个参数设置的值太大就会报ORA-27102: out of memory

vi /etc/sysctl.conf
kernel.shmmax = 4294967296
把kernel.shmmax值修改为 2147483648 此问题解决
但是看kernel.shmmax的解释,
kernel.shmmax = 536870912 1073741824 2147483648 分别代表1G2G4G
(根据系统物理内存大小,选择相应值)
但是我的的系统是8G的,设置为 4294967296,不知为何不可,这个有待于深究(改天研究一下)

对于32位系统,一页=4k,也就是4096字节。

另外网上关于kernel.shmall = 2097152  就是 2097152*4k/1024/1024 = 8G 就是说可用共享内存一共 8G
设置的一般规律
kernel.shmall = 2097152    ---内存8G
kernel.shmall = 4194304    ---内存16G
kernel.shmall = 8388608    ---内存32G

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

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

重启oracle启动没有问题