阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

HP-UX平台Oracle启动实例遭遇:ORA-27154,ORA-27300,ORA-27301,ORA-27302

121次阅读
没有评论

共计 8114 个字符,预计需要花费 21 分钟才能阅读完成。

环境: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. 初步定位
2. 验证猜想
3. 深入分析

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 值。

网上搜索到这些内核参数值的说明:

HP-UX 平台 Oracle 启动实例遭遇:ORA-27154,ORA-27300,ORA-27301,ORA-27302

种种迹象都表明和 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 的实验来看,并不是都符合推测的算法规则,就不再深究。

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计8114字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中