环境: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的更多相关文章

  1. Oracle 启动实例(instance)、打开数据库

    Oracle启动实例(instance).打开数据库   by:授客 QQ:1033553122 启动实例(instance).打开数据库 1.开启sqlplus [laiyu@localhost ~ ...

  2. Oracle 启动状态解说

    oracle 启动状态由nomount-mount-open 一. nomount状态下操作 08:09:49 idle> startup nomount; ORACLE instance st ...

  3. Linux平台Oracle多个实例启动说明

    环境说明:oracle实例1的SID为orcl(为默认启动的实例),第二个实例的SID为orcl2 启动步骤:  1)启动数据库实例完成后,启动数据库监听服务 #lsnrctl   start 2)切 ...

  4. Linux平台oracle 11g单实例 + ASM存储 安装部署 快速参考

    操作环境:Citrix虚拟化环境中申请一个Linux6.4主机(模板)目标:创建单机11g + ASM存储 数据库 1. 主机准备 2. 创建ORACLE 用户和组成员 3. 创建以下目录并赋予对应权 ...

  5. Oracle 数据库实例启动关闭过程

    Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等 ...

  6. oracle数据库实例启动与关闭

    区分数据库与实例:实例是指各种内存结构和服务进程,数据库是指基于磁盘存储的数据文件.控制文件.参数文件.日志文件和归档日志文件组成的物里文件集合. 数据库实例启动: startup [nomount ...

  7. srvctl和crs_start命令无法启动oracle RAC实例, 但sqlplus可以启动

    今天遇到一个奇怪问题,发现srvctl和crs_start命令无法启动Oracle RAC实例,但用sqlplus却可以正常启动.最终发现原因是在OCR中数据库的状态变成了disable,将此状态更改 ...

  8. Linux——oracle数据库实例启动关闭(转)

    -->Oracle 数据库实例启动关闭过程 --================================ [root@robinson ~]# su - oracle --查看未启动实例 ...

  9. oracle启动 init.ora spfile pfile[转]

    昨天晚上快下班的时候,公司数据库突然堵住了,一个buf表中累计了20多W的数据提取不出来,改了程序,效果不明显.因为之前有一次也重启过oracle,所以这次还是想把oracle重启一下,因为那些数据都 ...

随机推荐

  1. 如何从视频中分离出音乐,和对音乐做分割,合并的处理(瑞典音乐家-新八宝盒.mp3.rar下载)

    点击下载:瑞典音乐家-新八宝盒.mp3.rar 1.工具 Total Video Converter 3.71 视频处理(安装软件,有绿色版的) MP3剪切器 MP3剪切器(小工具) Mp3mateP ...

  2. 用户定义的java计数器

    mapreduce 计数器用来做某个信息的统计. 计数器是全局的.mapreduce 框架将跨所有map和reduce聚集这些计数器,并且作业结束时产生一个最终的结果. 语法像 java 的 enum ...

  3. [No0000116]SQLServer启用sa账户

    SQLServer如何启用sa账户,今天在这里唠叨一下关于SQL Server数据库如何启用sa账户的,作为一个数据库管理者,需要非常熟练掌握,具体步骤如下: 1.先登录数据库服务 首先在“开始”菜单 ...

  4. tensorflow一些常用函数的使用注意

    tf.abs() 求tensor中数据的绝对值 tf.sign() 每一个数据都执行sigmod函数,得到对应的数值 tf.reduce_sum() 对不同维度数据求和.注意:1:求和每一行 0:求和 ...

  5. 【每日一题】UVA - 1368 DNA Consensus String 字符串+贪心+阅读题

    https://cn.vjudge.net/problem/UVA-1368 二维的hamming距离算法: For binary strings a and b the Hamming distan ...

  6. [daily][centos] redhat增加扩展仓库

    https://rpmfusion.org/Configuration sudo yum localinstall --nogpgcheck https://download1.rpmfusion.o ...

  7. 20165336 2017-2018-2 《Java程序设计》第3周学习总结

    20165336 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 类名使用拉丁字母那么名字的首字母使用大写字母.每个单词的首字母应该大写. 成员变量在整个类内 ...

  8. apache在mac下403问题

    症状:在mac下使用xampp环境,httpd.conf权限,但访问网站报403错误. 解决方案:将对应文件目录权限改为755 修改后,Thinkphp访问提示Application不可写,无法创建内 ...

  9. 帝国cms搜索关键字调用标签(showsearch)怎么用

    前面ytkah介绍了如何让帝国CMS7.2搜索模板支持动态标签调用,现在我们来说说怎么调用帝国cms搜索关键字调用标签(showsearch).在帝国cms后台那边的使用方法:[showsearch] ...

  10. finecms指定从第几篇文章开始调用5条记录,并调用文章所在栏目

    我们在建站时可能会有具体的要求,比如从第几篇文章开始调用5篇,finecms如何实现呢?用下面一段代码就能完成:num=0,5表示从第一篇开始调用5篇,注意,0代表第一,5表示调用5篇: <a ...