linux 下的信号量参数
linux 下的信号量参数
转载自:http://blog.itpub.net/26110315/viewspace-718306/
信号量是一种锁机制用于协调进程之间互斥的访问临界资源。以确保某种共享资源不被多个进程同时
访问。数据库使用信号量来管理对操作系统资源的访问(比如内存共享段)。如果所有数据库进程所
需的信号量不足,会导致数据库不能启动或者运行时出错。这时候DBA 需要查看内核的信号量参数,
并重新进行设置。
[root@zeng ~]# cat /proc/sys/kernel/sem
250 32000 100 200
上面输出的4个值分别对应内核信号量参数:
semmsl 250 每个信号量集中的最大信号量数。
semmns 32000 整个系统中的最大信号量数。
semopm 100 每一个semop系统调用操作的最大信号量数。
semmni 200 信号量集最大数。
oracle 11gR2 在 oracle linux 6.0 安装对内核信号量参数的要求:
semmsl 250
semmns 32000
semopm 100
semmni 200
注:参照的是Oracle Linux 5 Update 2 的安装要求。因为oracle 11gR2 没有针对oracle linux 6.0
的安装文档。
修改信号量参数的值前请先查看信号量参数的值。
[root@zeng ~]# cat /proc/sys/kernel/sem
250 32000 100 200
可以使用echo、cat、sysctl -w、编辑/etc/sysctl.conf 的方式来改变内核信号量参数。写进
/etc/sysctl.conf 的内核参数应该执行sysctl -p 把刚才的修改实例化为当前的内核参数。
写进/etc/sysctl.conf 的内核参数下次重启以后依然有效。
[root@zeng ~]# echo "kernel.sem =250 32000 100 128" >> /etc/sysctl.conf
[root@zeng ~]# sysctl -p
确认修改以后的当前信号量值
[root@zeng ~]# cat /proc/sys/kernel/sem
250 32000 100 128