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重启一下,因为那些数据都 ...
随机推荐
- [No0000165]SQL 优化
SELECT 标识选择哪些列FROM 标示从哪个表中选择WHERE 过滤条件GROUP BY 按字段数据分组HAVING 字句过滤分组结果集ORDER BY 序按字段排序 ASC( 默认) 序升序 D ...
- xCode 升级9.3之后巨卡
因为项目要适配iPhone8, iPhoneX 等.需要升级Xcode需要升级到9.3.但是 MAC系统是10.12的,需要升级到10.13. 系统升级完之后升级Xcode.之后Xcode 就各种卡. ...
- php之运算符
运算符优先级相同,运算符的结合方向决定了该如何运算, 一.运算符优先级 组合方向 运算符 附加信息 无 clone new clone和new 左 [ array 右 ** 算术运算符 右 ++ -- ...
- wpf中通过ObjectDataProvider实现文本框的双向数据绑定(ps:适用于在文本框比较多的时候使用)
前端代码: 也页面的xaml中引入ObjectDataProvider: <Window.Resources> <ResourceDictionary> <ObjectD ...
- lsof and dynamic array in bash/shell
https://unix.stackexchange.com/questions/171519/lsof-warning-cant-stat-fuse-gvfsd-fuse-file-system F ...
- [skill][git] git 常用操作记录
傻瓜入门: step by step : https://try.github.io/levels/1/challenges/1 一本书: https://git-scm.com/book/en/v2 ...
- python处理csv文档
在工作中遇到了使用python解析csv文件的问题,包括读写操作,下面参考官网文档,进行一下总结: 首先CSV (Comma Separated Values) ,也就是逗号分开的数值,可以用Note ...
- 实现用 jquery 禁用浏览器的前进后退按钮
- 10.6-uC/OS-III内部任务(统计任务 OS_StatTask())
1.这个任务能够统计总的CPU使用率(0到100%),每个任务的CPU使用率( 0到100%),每个任务的堆栈使用量. 2.统计任务在uC/OS-III中是可选的,当设置OS_CFG.H中的OS_CF ...
- 设置帝国cms文章标题 真正符合百度建站标准
百度建站指南中有提到内容页的标题设置,标题描述清晰最好包含主站和频道信息:内容标题_频道名称_网站名称.帝国cms文章标题一般默认是内容标题_网站名称,那么如何调用当前文章的频道名称(分类名称)呢? ...