ITPub博客

首页 > 数据库 > Oracle > 调整参数process报错:ORA-27154,ORA-27300,ORA-27301,ORA-27302

调整参数process报错:ORA-27154,ORA-27300,ORA-27301,ORA-27302

原创 Oracle 作者:不一样的天空w 时间:2018-03-22 17:50:27 0 删除 编辑
调整参数process报错:ORA-27154,ORA-27300,ORA-27301,ORA-27302: failure occurred at: sskgpcreates

ORA-27154: post/wait create failed
ORA-27300: OS system dependent operation:semget failed with status: 28
ORA-27301: OS failure message: No space left on device
ORA-27302: failure occurred at: sskgpcreates

看提示,会误以为是磁盘空间不足 (No space left on device), 但是仔细看最后的提示(一般报错最后的错误才是根源), 发现是信号量参数设置问题。

kernel.sem  = semmsl  semmns  semopm  semmni

调整了下/etc/sysctl.conf,原来值为
kernel.sem =250 32000 100 128

修改为
kernel.sem =250 32000 100 300

问题解决。


process和session的理解:

ORACLE的连接数(sessions)与其参数文件中的进程数(process)有关,它们的关系如下:
   sessions=(1.1*process+5)

但是我们增加process数时,往往数据库不能启动了。这因为我们还漏调了一个unix系统参数:它是/etc/system/ 中semmns,这是unix系统的信号量参数。每个process会占用一个信号量。semmns调整后,需要重新启动unix操作系统,参数才能生效。

不过它的大小会受制于硬件的内存或ORACLE SGA。范围可从200——2000不等。
  semmns的计算公式为:
     SEMMNS>processes+instance_processes+system
     processes             :数据库参数processes的值
     instance_processes:5(smon,pmon,dbwr,lgwr,arch)
     system                 :系统所占用信号量。

系统所占用信号量可用下列命令查出:
  #ipcs -sb
     
其中列NSEMS显示系统已占用信号量和其它一些跟连接有关的参数:
  licence_max_sessions, licence_sessions_warning 等默认设置都为零,也就是没有限制。

semaphores 参数的优化原则如下:
 
1. Calculate the minimum total semaphorerequirements using the following formula:
 
  2*sum (process parameters of all database instances on the system) + overhead for background processes + system and other applications.
 
2. Set semmns (total semaphores systemwide)to this total.
 
3. Set semmsl (semaphores for each set ) to 256
 
4. Set semmni (total semaphores sets) tosemmns devided by semmsl, rounded up to the nearest multiple of 1024

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

下一篇: db file scattered read
请登录后发表评论 登录
全部评论

注册时间:2016-09-22

  • 博文量
    916
  • 访问量
    1400467