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,参数才能生效。接着再重启数据库,正常启动。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?