HP-UNIX平台修改Oracle processes参数报错:ORA-27154、ORA-27300、ORA-27301、ORA-27302

OS 版本     :HP-UX B.11.31
Oracle版本:11.2.0.4 (RAC)

(一)问题描述

最近发现无法连接上数据库,报错信息为“ORA-00020:maximum number of processes (3000) exceeded”,很明显是数据库的进程数量已经达到了最大值,可用过v$process确认

SQL> select count(*) from v$process;

  COUNT(*)
----------
      3000

 

于是打算将数据库参数processes改大一些,直接修改为6000。修改命令如下:

SQL> alter system set processes=6000 scope=spfile sid='*';

重启节点:
srvctl stop instance -d {oracle_name} -i {instance_name}

srvctl start instance -d {oracle_name} -i {instance_name}
在重启时候,发现有错误提示:
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

(二)解决方案

通过查找资料,可通过修改OS内核参数解决,可以使用SAM修改,也可使用kctune工具修改,这里使用kctune工具修改,修改过程如下

(1)确认semm*参数的当前值

oracledb2#[/]kctune | grep semm
semmni    5120 5120
semmns    8192 8192
semmnu    4092 4092
semmsl    2048 Default Immed

(2)修改semmni参数
oracledb2#[/]kctune semmni=8192
==> Update the automatic 'backup' configuration first? y
* The automatic 'backup' configuration has been updated.
* Future operations will update the backup without prompting.
NOTE: The requested changes could not be applied to the currently
running system, for the following reasons:
- The tunable 'semmni' cannot be changed without a reboot.
* The requested changes have been saved, and will take effect at
next boot.
Tunable              Value     Expression
semmni (now)         5120      5120
       (next boot)   8192      8192

(3)修改semmns的值
oracledb2#[/]kctune semmns=16384
* The automatic 'backup' configuration has been updated.
NOTE: The requested changes could not be applied to the currently
running system, for the following reasons:
- The tunable 'semmns' cannot be changed without a reboot.
* The requested changes have been saved, and will take effect at
next boot.
Tunable             Value    Expression
semmns (now)        8192     8192
       (next boot)  16384    16384

(4)修改nproc参数的值,该参数修改后立刻生效
oracledb2#[/]kctune nproc=8192
* The automatic 'backup' configuration has been updated.
WARNING: The validity of the tunable values could not be completely
verified, because the value of the tunable 'process_id_max'
will not be known until the system is booted. The tunable
values will be verified during boot. Please check the console
messages during boot to see if there are any tunable value
errors.
* The requested changes have been applied to the currently
running configuration.
Tunable           Value          Expression     Changes
nproc (before)    6144           6144           Immed
      (now)       8192           8192

(5)修改semmnu的值
oracledb2#[/]kctune semmnu=8188
* The automatic 'backup' configuration has been updated.
NOTE: The requested changes could not be applied to the currently
running system, for the following reasons:
- The tunable 'semmnu' cannot be changed without a reboot.
* The requested changes have been saved, and will take effect at
next boot.
Tunable            Value     Expression
semmnu (now)       4092      4092
       (next boot) 8188      8188

需要注意的是,在修改semmnu之前,需要确定nproc的值,确保:nproc >= semmnu + 4。

错误示范:

oracledb2#[/]kctune semmnu=8188
ERROR: The values of the tunables 'semmnu' (8188) and 'nproc' (6144)
do not satisfy the requirement:
nproc >= semmnu + 4

在改完参数之后,需要重启OS,参数才能生效。接着再重启数据库,正常启动。

posted @ 2018-07-24 18:55  gegeman  阅读(514)  评论(0编辑  收藏  举报