今天因为oracle 链接数设置的是150 ,报错超过最大porcess限额了。
所以修改了:
alter system set processes=300 scope=spfile;
然后重启数据库,好了,开始报错:
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
磁盘空间是充足的,报错最后一行 sskgp。因为数据库设置的process超过了root设置的系统平台参数。
/sbin/sysctl -a |grep sem
看到系统的内核信号量参数设置(默认配置)
kernel.sem = 250 32000 100 128
从左到右分别为SEMMSL、SEMMNS、SEMOPM和SEMMNI。
1)SEMMSL:设置每个信号灯组中信号灯最大数量,推荐的最小值是250。
对于系统中存在大量并发连接的系统,推荐将这个值设置为 PROCESSES初始化参数加10。
2)SEMMNS:设置系统中信号灯的最大数量。操作系统在分配信号灯时不会超过LEAST(SEMMNS,SEMMSL*SEMMNI)。事实上,如果SEMMNS的值超过了SEMMSL*SEMMNI是非法的,因此推荐SEMMNS的值就设置为SEMMSL*SEMMNI。Oracle推荐SEMMNS的设置不小于32000,假如数据库的PROCESSES参数设置为600,则SEMMNS的设置应为:
SQL> select (250+10)*128 from dual;
(250+10)*142
33280
3)SEMOPM:设置每次系统调用可以同时执行的最大信号灯操作的数量。
由于一个信号灯组最多拥有SEMMSL个信号灯,因此有推荐将SEMOPM设置为SEMMSL的值。
Oracle验证的10.2和11.1的SEMOPM的配置为100。
4)SEMMNI:设置系统中信号灯组的最大数量。Oracle10g和11g的推荐值为142。
开始修改:
vi /etc/sysctl.cnf
kernel.sem= 310 46020 100 142
/sbin/sysctl -p
然后重启数据库,正常。