在这里,对oracle在/etc/sysctl 要用到的参数值做个简要的解释和说明。
(1)kernel.shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。Linux 2.4/2.6缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为和实际内存一样大即可。
(2)kernel.shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。
(3)kernel.shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。
(4)kernel.sem:该参数表示设置的信号量。
(5)fs.file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。
(6)net.ipv4.ip_local_port_range: 表示端口的范围,为指定的内容。
(7)net.core.rmem_default: 表示接收套接字缓冲区大小的缺省值(以字节为单位)。
(8)net.core.rmem_max: 表示接收套接字缓冲区大小的最大值(以字节为单位)
(9)net.core.wmem_default: 表示发送套接字缓冲区大小的缺省值(以字节为单位)。
(10)net.core.wmem_max: 表示发送套接字缓冲区大小的最大值(以字节为单位)。
修改好内核以后,执行sysctl -p命令使新的配置生效。
注意:
对于32位系统,一页=4k,也就是4096字节
kernel.shmall = 4096 就是 4096*4k/1024/1024 = 15M 就是说可用共享内存一共 15M,数据库当然会起不来啦。
原值为 kernel.shmall = 4096
设置的一般规律
kernel.shmall = 2097152 ---内存8G
kernel.shmall = 4194304 ---内存16G
kernel.shmall = 8388608 ---内存32G
kernel.shmall = 10485760 ---内存40G
kernel.shmall = 12582912 ---内存48G
kernel.shmall = 14680064 ---内存56G
kernel.shmall = 16777216 ---内存64G
kernel.shmall = 20971520 ---内存80G
kernel.shmall = 25165824 ---内存96G
kernel.shmall = 33554432 ---内存128G
kernel.shmall = 50331648 ---内存192G
kernel.shmall = 67108864 ---内存256G