HP-UX平台Oracle启动实例遭遇:ORA-27154,ORA-27300,ORA-27301,ORA-27302
环境:HP-UX 11.31 + Oracle 11.2.0.4
现象:在hpux安装Oracle,按业务需求配置参数后,无法启动实例。
报错如下:
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
1.初步定位
快速判定这是实例就无法启动,也就是nomount这一阶段就无法成功,首先想到的是参数配置不合理。
经过尝试,最终发现是processes参数设置过高,导致无法启动实例,当前期望设置8000,测试调整为7000就可以成功启动。
去MOS搜索hpux平台这个错误没有找到结果,但是却有其他平台的匹配结果:
- Database Startup Fails with ORA-27300: OS system dependent operation:semget failed with status: 28 (文档 ID 949468.1)
- Instance Startup Fails With Error ORA-27154,ORA-27300,ORA-27301,ORA-27302 (文档 ID 314179.1)
而这些文档的原因基本定位在sem相关的内核参数调整上。
2.验证猜想
找到HPUX关于sem内核参数的当前设置:
kctune -h -B semmni=4096
kctune -h -B semmns=8192
kctune -h -B semmnu=4092
kctune -h -B semvmx=32767
这些都是Oracle官方文档建议的设置值,但现在看来,目前这些内核参数的设置不能满足此时用户业务所要求的processes值。
网上搜索到这些内核参数值的说明:

种种迹象都表明和sem参数有关,那么尝试将semmni和semmns参数都修改为2倍值,即8192和16384。
kctune -h -B semmni=8192
kctune -h -B semmns=16384
--重启操作系统生效:
shutdown -ry 0
之后再次将processes设置为8000,已经可以正常启动实例,问题解决。
3.深入分析
当semmni和semmns参数值是官方文档默认值时,按业务要求设置process为8000,无法启动实例。将semmni和semmns参数值都设置为二倍值之后,再测试将process设置为16000时,同样无法启动实例。
可以看到的确这个sem信号量和processes有着某种关联,而且此时启动到nomount状态,实际并没有用户连接,说明信号量是预先分配的,下面来具体验证。
以下所有测试都是启动数据库到nomount:
3.1 设置processes值为默认值150
此时ipcs观察到的结果:
Superdome10@oracle[/oradata/orcl]ipcs -as
IPC status from /dev/kmem as of Fri Jun 1 16:57:15 2018
T ID KEY MODE OWNER GROUP CREATOR CGROUP NSEMS OTIME CTIME
Semaphores:
s 0 0x4f1c06da --ra------- root root root root 1 11:44:05 11:44:05
s 1 0x411c01b6 --ra-ra-ra- root root root root 1 11:44:07 11:44:05
s 2 0x4e0c0002 --ra-ra-ra- root root root root 2 11:44:07 11:44:05
s 3 0x41203bb5 --ra-ra-ra- root root root root 2 no-entry 11:44:05
s 4 0x01090522 --ra-r--r-- root root root root 1 no-entry 11:44:11
s 8197 0x00a5c581 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8198 0x00a5c582 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8199 0x00a5c583 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8200 0x00a5c584 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8201 0x00a5c585 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8202 0x00a5c586 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8203 0x00a5c587 --ra------- sfmdb users sfmdb users 17 16:32:32 11:44:13
s 12 0x4914942f --ra-r--r-- root root root root 1 11:44:32 11:44:32
s 13 0x410c030b --ra-ra-ra- root root root root 1 11:44:33 11:44:33
s 196622 0x5c23a1bc --ra-r----- oracle dba oracle dba 154 no-entry 16:47:46
可以看到NSEMS的数值是154,此时可以满足150的processes。
3.2 设置processes值为8000
此时ipcs观察到的结果:
Superdome10@oracle[/oradata/orcl]ipcs -as
IPC status from /dev/kmem as of Fri Jun 1 17:00:50 2018
T ID KEY MODE OWNER GROUP CREATOR CGROUP NSEMS OTIME CTIME
Semaphores:
s 0 0x4f1c06da --ra------- root root root root 1 11:44:05 11:44:05
s 1 0x411c01b6 --ra-ra-ra- root root root root 1 11:44:07 11:44:05
s 2 0x4e0c0002 --ra-ra-ra- root root root root 2 11:44:07 11:44:05
s 3 0x41203bb5 --ra-ra-ra- root root root root 2 no-entry 11:44:05
s 4 0x01090522 --ra-r--r-- root root root root 1 no-entry 11:44:11
s 8197 0x00a5c581 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8198 0x00a5c582 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8199 0x00a5c583 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8200 0x00a5c584 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8201 0x00a5c585 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8202 0x00a5c586 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8203 0x00a5c587 --ra------- sfmdb users sfmdb users 17 16:32:32 11:44:13
s 12 0x4914942f --ra-r--r-- root root root root 1 11:44:32 11:44:32
s 13 0x410c030b --ra-ra-ra- root root root root 1 11:44:33 11:44:33
s 229390 0x5c23a1bc --ra-r----- oracle dba oracle dba 2001 no-entry 17:00:44
s 49167 0x5c23a1bd --ra-r----- oracle dba oracle dba 2001 no-entry 17:00:44
s 49168 0x5c23a1be --ra-r----- oracle dba oracle dba 2001 no-entry 17:00:44
s 49169 0x5c23a1bf --ra-r----- oracle dba oracle dba 2001 no-entry 17:00:44
s 8210 0x5c23a1c0 --ra-r----- oracle dba oracle dba 2001 no-entry 17:00:44
可以看到NSEMS值为2001,一共5组,此时可以满足8000的processes。
3.3 设置processes值为16000
此时ipcs观察到的结果:
Superdome10@oracle[/oradata/orcl]ipcs -as
IPC status from /dev/kmem as of Fri Jun 1 17:10:22 2018
T ID KEY MODE OWNER GROUP CREATOR CGROUP NSEMS OTIME CTIME
Semaphores:
s 0 0x4f1c06da --ra------- root root root root 1 11:44:05 11:44:05
s 1 0x411c01b6 --ra-ra-ra- root root root root 1 11:44:07 11:44:05
s 2 0x4e0c0002 --ra-ra-ra- root root root root 2 11:44:07 11:44:05
s 3 0x41203bb5 --ra-ra-ra- root root root root 2 no-entry 11:44:05
s 4 0x01090522 --ra-r--r-- root root root root 1 no-entry 11:44:11
s 8197 0x00a5c581 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8198 0x00a5c582 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8199 0x00a5c583 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8200 0x00a5c584 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8201 0x00a5c585 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8202 0x00a5c586 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8203 0x00a5c587 --ra------- sfmdb users sfmdb users 17 16:32:32 11:44:13
s 12 0x4914942f --ra-r--r-- root root root root 1 11:44:32 11:44:32
s 13 0x410c030b --ra-ra-ra- root root root root 1 11:44:33 11:44:33
可以看到,因为nomount报错:ORA-27154,ORA-27300,ORA-27301,ORA-27302,实例启动不成功,所以没有oracle用户的任何分配。
3.4 设置processes值为14000
此时ipcs观察到的结果:
Superdome10@oracle[/oradata/orcl]ipcs -as
IPC status from /dev/kmem as of Fri Jun 1 17:11:53 2018
T ID KEY MODE OWNER GROUP CREATOR CGROUP NSEMS OTIME CTIME
Semaphores:
s 0 0x4f1c06da --ra------- root root root root 1 11:44:05 11:44:05
s 1 0x411c01b6 --ra-ra-ra- root root root root 1 11:44:07 11:44:05
s 2 0x4e0c0002 --ra-ra-ra- root root root root 2 11:44:07 11:44:05
s 3 0x41203bb5 --ra-ra-ra- root root root root 2 no-entry 11:44:05
s 4 0x01090522 --ra-r--r-- root root root root 1 no-entry 11:44:11
s 8197 0x00a5c581 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8198 0x00a5c582 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8199 0x00a5c583 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8200 0x00a5c584 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8201 0x00a5c585 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8202 0x00a5c586 --ra------- sfmdb users sfmdb users 17 11:44:13 11:44:13
s 8203 0x00a5c587 --ra------- sfmdb users sfmdb users 17 16:32:32 11:44:13
s 12 0x4914942f --ra-r--r-- root root root root 1 11:44:32 11:44:32
s 13 0x410c030b --ra-ra-ra- root root root root 1 11:44:33 11:44:33
s 294926 0x5c23a1bc --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 65551 0x5c23a1bd --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 65552 0x5c23a1be --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 65553 0x5c23a1bf --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 24594 0x5c23a1c0 --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 8211 0x5c23a1c1 --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 8212 0x5c23a1c2 --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 8213 0x5c23a1c3 --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
s 22 0x5c23a1c4 --ra-r----- oracle dba oracle dba 1750 no-entry 17:10:55
可以看到,NSEMS值为1750,一共9组,此时可以满足14000的processes。
总结:通过这个案例,可以知道ipcs看的那个信号量和process之间有直接的关联。咨询我司专家,这之间还存在某种算法,但从HPUX的实验来看,并不是都符合推测的算法规则,就不再深究。
HP-UX平台Oracle启动实例遭遇:ORA-27154,ORA-27300,ORA-27301,ORA-27302的更多相关文章
- Oracle 启动实例(instance)、打开数据库
Oracle启动实例(instance).打开数据库 by:授客 QQ:1033553122 启动实例(instance).打开数据库 1.开启sqlplus [laiyu@localhost ~ ...
- Oracle 启动状态解说
oracle 启动状态由nomount-mount-open 一. nomount状态下操作 08:09:49 idle> startup nomount; ORACLE instance st ...
- Linux平台Oracle多个实例启动说明
环境说明:oracle实例1的SID为orcl(为默认启动的实例),第二个实例的SID为orcl2 启动步骤: 1)启动数据库实例完成后,启动数据库监听服务 #lsnrctl start 2)切 ...
- Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考
操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...
- Oracle 数据库实例启动关闭过程
Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等 ...
- oracle数据库实例启动与关闭
区分数据库与实例:实例是指各种内存结构和服务进程,数据库是指基于磁盘存储的数据文件.控制文件.参数文件.日志文件和归档日志文件组成的物里文件集合. 数据库实例启动: startup [nomount ...
- srvctl和crs_start命令无法启动oracle RAC实例, 但sqlplus可以启动
今天遇到一个奇怪问题,发现srvctl和crs_start命令无法启动Oracle RAC实例,但用sqlplus却可以正常启动.最终发现原因是在OCR中数据库的状态变成了disable,将此状态更改 ...
- Linux——oracle数据库实例启动关闭(转)
-->Oracle 数据库实例启动关闭过程 --================================ [root@robinson ~]# su - oracle --查看未启动实例 ...
- oracle启动 init.ora spfile pfile[转]
昨天晚上快下班的时候,公司数据库突然堵住了,一个buf表中累计了20多W的数据提取不出来,改了程序,效果不明显.因为之前有一次也重启过oracle,所以这次还是想把oracle重启一下,因为那些数据都 ...
随机推荐
- C和C指针小记(九)-指针用法1
1. *p++ 最常用的一个指针的用法,就是在循环中用来迭代. *p++ 共有3步操作: 1.++操作符把p所指向的内存中的值复制一份 2.++操作符把p加1(实际是一个p所指内存单元的大小,这也是编 ...
- elastic search范围查询
queryBuilder.must(QueryBuilders.rangeQuery("pt_longitude").from(minLongitude).to(maxLongit ...
- 知乎改版api接口之scrapy自动登陆
最近使用scrapy模拟登陆知乎,发现所有接口都发生变化了,包括验证码也发生了很大变化,通过抓包分析,记录下改版后的知乎模拟登陆,废话不多说,直接上代码,亲测有效 # -*- coding: utf- ...
- SQL Server 2008 R2提示评估期已过
解决SQL Server 2008 r2提示评估期已过 1.注册表把 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\Co ...
- 写出简洁的Python代码: 使用Exceptions(转)
add by zhj: 非常好的文章,异常在Python的核心代码中使用的非常广泛,超出一般人的想象,比如迭代器中,当我们用for遍历一个可迭代对象时, Python是如何判断遍历结束的呢?是使用的S ...
- 【Python】脚本运行报错:IndentationError: unindent does not match any outer indentation level
[问题] 一个python脚本,本来都运行好好的,然后写了几行代码,而且也都确保每行都对齐了,但是运行的时候,却出现语法错误: IndentationError: unindent does not ...
- 【叶问】MySQL误删除frm文件该怎么办?
MySQL误删除frm文件该怎么办?情况一:误删后还未重启MySQL1.从proc中恢复.frm文件cp /proc/`pidof mysqld`/fd/误删除的.frm /datadir/db/对应 ...
- maven 转myeclipse eclipse 项目 命令
我们在网上下载的开源Maven工程想要转换成Eclipse能够识别的工程,需要执行如下命令: Jar工程: mvn eclipse:eclipse 或 mvn eclipse:myeclipse We ...
- 向github提交代码总是要输入用户名密码
在命令行输入命令: $ git config --global credential.helper store 这一步会在用户目录下的.gitconfig文件最后添加: [credential] ...
- centos6和7关闭防火墙
centos6 service iptables stop 临时 chkconfig iptables off 永久 service iptables status centos7 sys ...