Oracle启动报错:ORA-27154 ORA-27300 ORA-27301 ORA-27302

Oracle启动报错:ORA-27154 ORA-27300 ORA-27301 ORA-27302

SQL> startup
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: sskgpsemsper

这个错误是由内核参数kernel.sem设置错误造成,可用sysctl -p查看当前设置值:

[root@RHEL5X86 oracle]# /sbin/sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
kernel.sem = 250  100

kernel.sem参数应有4部分组成:SEMMSL、SEMMNS、SEMOPM、SEMMNI,分别是:
SEMMSL: 每个信号集的最大信号数量
数据库最大 PROCESS 实例参数的设置值再加上 10 。
Oracle 建议将 SEMMSL 的值设置为不少于 100 。
SEMMNS: 用于控制整个 Linux 系统中信号(而不是信号集)的最大数。
Oracle 建议将 SEMMNS 设置为:系统中每个数据库的 PROCESSES 实例参数设置值的总和,加上最大 PROCESSES 值的两倍,最后根据系统中 Oracle 数据库的数量,每个加 10 。
使用以下计算式来确定在 Linux 系统中可以分配的信号的最大数量。它将是以下两者中较小的一个值:SEMMNS 或 (SEMMSL * SEMMNI)
SEMOPM: 内核参数用于控制每个 semop 系统调用可以执行的信号操作的数量。semop 系统调用(函数)提供了利用一个 semop 系统调用完成多项信号操作的功能。一个信号集能够拥有每个信号集中最大数量的SEMMSL 信号,因此建议设置 SEMOPM 等于SEMMSL 。
Oracle 建议将 SEMOPM 的值设置为不少于 100 。
SEMMNI: 内核参数用于控制整个 Linux 系统中信号集的最大数量。
Oracle 建议将 SEMMNI 的值设置为不少于 100 。

所以修改正确的设置值后使用sysctl -p命令使新值生效就可以去启动Oracle了。

[root@RHEL5X86 oracle]# vi /etc/sysctl.conf
#使用root账号,vi编辑配置文件,修改参数值后,使用sysctl-p使生效。
root@RHEL5X86 oracle]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 4294967295
kernel.shmall = 268435456
fs.file-max = 6815744
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
kernel.sem = 250 32000 100 128

切换回Oracle用户,启动数据库顺利完成。

[oracle@RHEL5X86 oradata]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on Thu Nov 29 18:28:59 2018

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  849530880 bytes
Fixed Size		    1339824 bytes
Variable Size		  620760656 bytes
Database Buffers	  222298112 bytes
Redo Buffers		    5132288 bytes
Database mounted.
Database opened.

猜你喜欢

转载自blog.csdn.net/Jerry_Shang_0/article/details/84618750