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,参数才能生效。接着再重启数据库,正常启动。