日期:2014-05-16 浏览次数:20535 次
以服务器内存为4G
修改/etc/sysctl.conf
文件 (ROOT账户)
kernel.shmmax =
2147483648
//公式:2G*1024*1024*1024=2147483648(字节)
//表示最大共享内存,如果小的话可以按实际情况而定,一般为物理内存的一半(单位:字节)
kernel.shmmni=4096
//表示最小共享内存固定4096KB(由于32位操作系统默认一页为4K)
kernel.shmall=1048576
//公式:4G*1024*1024/4K = 1048576(页)
//表示所有内存大小(单位:页)
kernel.sem=250 32000 100 128
//4个参数依次是SEMMSL:每个用户拥有信号量最大数,SEMMNS:系统信号量最大数,SEMOPM:每次semopm系统调用操作数,SEMMNI:系统辛苦量集数最大数。这4个参数为固定内容大小
fs.file-max=65536
//file-max固定大小65536
net.ipv4.ip_local_port_range=1024 65000
//ip_local_port_range表示端口的范围,为指定的内容
以上步骤做完执行 /sbin/sysctl -p
使内核生效
验证参数(root账户执行):
#
/sbin/sysctl -a | grep
shm
#
/sbin/sysctl -a | grep sem
#
/sbin/sysctl -a | grep file-max
#
/sbin/sysctl -a | grep ip_local_port_range
1 、与 oracle 相关的信号量和共享内存段参数
?
?? 一般 unix 系统中和信号量相关的是三个参数 SEMMNI SEMMSL SEMMNS 。他们相互关联决定系统可以分配的信号量。 Oracle 使用信号量完成内部进程之间的通信。
?
?? 关于共享内存段使用 shmmx 参数进行总体控制。它指定了系统可以分配的共享内存段最大大小,实际并没有分配那么多只是给出一个可以使用的最大限制。
?
??
对于类核参数的修改必须要重新启动系统之后才会生效。
2
、出现
信号量和共享内存段相关问题的情况
?
?? oracle 只有在 startup nomount 的时候才会请求 os 的这些资源,用于建立 SGA 和启动后台进程。
?
?? 有些情况下因为 oracle 崩溃之后 os 没有清除 oracle 分配的 SGA ,也可能造成共享内存段不足,需要人工清除。
?
3 、如何解决相关的问题