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.初步定位
  • 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值。

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

种种迹象都表明和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观察到的结果:

[email protected][/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观察到的结果:

[email protected][/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观察到的结果:

[email protected][/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观察到的结果:

[email protected][/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的实验来看,并不是都符合推测的算法规则,就不再深究。

原文地址:https://www.cnblogs.com/jyzhao/p/9124373.html

时间: 2024-11-01 20:53:57

HP-UX平台Oracle启动实例遭遇:ORA-27154,ORA-27300,ORA-27301,ORA-27302的相关文章

Oracle启动实例报00845错误(linux系统)

问题:SQL> startup;          ORA-00845: MEMORY_TARGET not supported on this system 启动oracle实例时,提示ORA-00845: MEMORY_TARGET not supported on this system: 原因:是因为这个/dev/shm(可用的值)小于MEMORY_TARGET的值 首先查看/dev/shm的值: [[email protected] ~]# df -k /dev/shmFilesyst

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

环境说明:oracle实例1的SID为orcl(为默认启动的实例),第二个实例的SID为orcl2 启动步骤:  1)启动数据库实例完成后,启动数据库监听服务 #lsnrctl   start 2)切换到需要启动的数据库实例下,如下表示启动的是orcl数据库实例,若要启动orcl2,则修改ORACLE_SID=orcl2 #export   ORACLE_SID=orcl 3)使用oracle账号登陆Linux系统 #oracle    #passwd:oraclepass 4)启动数据库实例 

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

--================================ -->Oracle 数据库实例启动关闭过程 --================================ /* Oracle数据库实例的启动,严格来说应该是实例的启动,数据库仅仅是在实例启动后进行装载.Oracle数据启动的过程被划分为 几个不同的步骤,在不同的启动过程中,我们可以对其实现不同的操作,系统修复等等工作,因此了解Oracle数据启动.关闭是非常 有必要的.下面详细了Oracle Database 10g 

oracle数据库实例启动与关闭

区分数据库与实例:实例是指各种内存结构和服务进程,数据库是指物里存储磁盘空间. 数据库实例启动: startup [nomount | mount | open | force ]  [resetrict]  [pfile=finename] nomount 表示启动实例不加载数据库 mount 表示启动实例.加载数据库并保持数据库关闭状态 open 表示启动实例.加载并打开数据库,默认为此选项 force 表示终止实例并重新启动数据库 resetrict 表示以受限制的会话方式启动数据库 pf

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

今天遇到一个奇怪问题,发现srvctl和crs_start命令无法启动Oracle RAC实例,但用sqlplus却可以正常启动.最终发现原因是在OCR中数据库的状态变成了disable,将此状态更改为enable后恢复正常. 以下是一个模拟示例: [email protected]:~ $> crs_stat -t Name Type Target State Host ------------------------------------------------------------ o

Linux平台oracle 11g单实例 安装部署配置 快速参考

1.重建主机的Oracle用户 组 统一规范 uid gid 以保证共享存储挂接或其他需求的权限规范 userdel -r oracle groupadd -g 500 oinstall groupadd -g 501 dba useradd -g oinstall -G dba -u 500 oracle #id oracle uid=500(oracle) gid=500(oinstall) 组=500(oinstall),501(dba) 2.安装好Oracle 需要的rpm包.安装rpm

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

-->Oracle 数据库实例启动关闭过程 --================================ [[email protected] ~]# su - oracle --查看未启动实例前的进程情况 [[email protected] ~]$ ps -aef |grep oracle root      3332  3300  0 12:20 pts/1    00:00:00 su - oracle oracle    3333  3332  0 12:20 pts/1   

当有超过64个逻辑cpu时,Windows 下Oracle db 实例启动(startup)时会hang(挂起)

Bug 9772171 - Database startup hangs on Windows when machine has more than 64 cores [ID 9772171.8] 该文章已经说明:在11.2.0.2 已经fix(解决)该bug. 而现在11gR2版本已经推出了11.2.0.4,并且11.2.0.4是最终的11gR2版本.所以我们推荐安装11.2.0.4 外加最新的psu 最新的psu可以 查询这个文章获得:Oracle Database, Networking 

转载:oracle 启动过程--oracle深入研究

Oracle数据库的启动-nomount状态深入解析 通常所说的Oracle Server主要由两个部分组成:Instance和Database.Instance是指一组后台进程(在Windows上是一组线程)和一块共享内存区域:Database是指存储在磁盘上的一组物理文件.通过Instance与Database协同,Oracle数据库才能形成一个动态的可访问关系型数据库系统.本章将由数据库如何启动与关闭入手,开始和大家一起进入Oracle数据库的国度.1.1 数据库的启动从表象来看,数据库的