ITPub博客

首页 > 数据库 > Oracle > oracle Semaphores详解

oracle Semaphores详解

原创 Oracle 作者:流云风秀 时间:2015-03-10 23:17:04 0 删除 编辑
Semaphores 介绍:

Semaphores 是ORACLE利用进程间通信的系统资源。他们占用较小的内存空间。
Semaphores有三个操作系统内核参数控制(SEMMSL SEMMNS SEMMNI),修改此参数,不能立即生效,需要重启操作系统。

SEMMNI -->OS limit on the Number of Identifiers or sets.(信号量集)
SEMMSL -->The number of semaphores in an identifier or set(每个信号量集中包含多少个信号量)
SEMMNS --> The total Number of Semaphores allowed system wide.(系统级决定的信号量个数)
一个系统中信号量的个数将由SEMMNI*SEMMSL与SEMMNS 的最小值决定。
在ORACLE 7中一个ORACLE实例需求的semaphores数目等于初始化参数文件中processes的值。
在oracle7,racle8,racle9i,racle10g中一个ORACLE实例需求的semaphores数目等于初始化参数文件中processes的值的2倍。

Linux 中Semaphores 查看:

内核参数文件/proc/sys/kernel/sem 中记录了Semaphores 的配置。默认情况下,此值已能满足需求,不建议直接修改。
此参数文件中包含了四个值,一次为:
SEMMSL SEMMNS SEMOPM SEMMNI

This parameter defines the maximum number of semaphore operations that can be performed per semop(2) system call (semaphore call). The semop(2) function provides the ability to do operations for multiple semaphores with one semop(2) system call. Since a semaphore set can have the maximum number of SEMMSL semaphores per semaphore set, it is often recommended to set SEMOPM equal to SEMMSL.

 SEMOPM主要的限制体现在:                             
     1.lgwr写完之后通知应用进程的过程中,也就是主要影响log file sync(如设置250,一次semops最多可以通知250个应用进程,当应用commit厉害时,semops会大大增加,会到影响系统性能)。
    2.发生大规模enqueue lock时,通知等待在此锁资源上的进程(如果有500个进程等待同一个锁,则需要进行2次semops调用,来通知等待的进程,锁可以使用了)。
可以跟踪一下oracle的lgwr进程,可以看到秒隔3秒调用一次semtimedop,是一个超时调用,当semtimedop()调用致使lgwr进程进入睡眠,因为logbuffer在空闲的情况下有一个3秒刷一次的机制:
[oracle@ora11g ~]$ ps -ef | grep lgwr
[oracle@ora11g ~]$ strace -p 2642

如何查看当前系统中正在使用的Semaphores
ipcs -s



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23988293/viewspace-1455420/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-04-05

  • 博文量
    9
  • 访问量
    22721