shut immediate 数据库遭遇 ORA-24324 ORA-24323
SQL> shut immediate
ORA-24324: service handle not initialized
ORA-24323: value not allowed
ORA-27140: attach to post/wait facility failed
ORA-27300: OS system dependent operation:invalid_egid failed with status: 1
ORA-27301: OS failure message: Operation not permitted
ORA-27302: failure occurred at: skgpwinit6
ORA-27303: additional information: startup egid = 501 (oinstall), current egid = 504 (asmadmin)
---最直接的解决办法
shutdown abort
后面退出会话,然后登陆sqlplus,使用shutdown abort 才将数据库关闭。处理完成后,查了一下metal link官方文档,发现引起错误的原因为:
Background processes are hanging/not started correctly during the previous startup of this database.
Hence the semaphores and shared memory segments are not getting detached properly now during shutdown.
以后遇到这个问题,可以使用下面步骤处理:
1. Verify that there are no background processes owned by "oracle" , if there are kill them
$ ps -ef | grep ora_ | grep $ORACLE_SID
2. Remove shared memory and semaphores:
A) Check for shared memory and semaphores
$ ipcs -mt (if there is anything owned by oracle remove it)
$ ipcrm -m [ID] (to remove it)
B) Check and remove semaphores
$ ipcs -sbt (if there is anything owned by oracle remove it)
$ ipcrm -s [ID] (to remove it)
C) Remove sga and lk file
$ cd $ORACLE_HOME/dbs
$ rm sgadef<SID>.dbf (removing sga file)
$ORACLE_HOME/dbs/lk<sid> (removing lk... flies)
D) If database is down, try to bring up oracle one step at a time:
$ sqlplus /nolog
SQL> startup nomount pfile = ...[path]
SQL> alter database mount;
SQL> alter database open;\
Otherwise, exit current SQL*Plus session and verify the following environment variables are set.
echo $ORACLE_HOME
echo $ORACLE_SID (echo %ORACLE_SID% on Windows)
Then, Execute the following:
sqlplus / as sysdba
shutdown abort
exit
sqlplus / as sysdba
startup
如上官方资料所示, 两种解决方案。关于第一种方案,简单梳理如下:
1: 清理后台进程,一般找到相关进程后,使用kill命令杀掉。
2: 清理共享内存段
3: 清理信号集
注意,在RHEL 中, ipcs -sbt命令会报错"ipcs: invalid option -- b",这个是因为Linux上的ipcs命令,不支持UNIX上的-b,所以不能照本宣科,不要使用参数b. 具体参考官方文档ipcs man page describes invalid -b option in RHEL 5
4: 删除 sga and lk文件。
ipcs相关资料:
ipcs 命令往标准输出写入一些关于活动进程间通信设施的信息。如果没有指定任何标志,ipcs 命令用简短格式写入一些关于当前活动消息队列、共享内存段、信号量、远程队列和本地队列标题。
参考资料:
ORA-24324 During Startup or Shutdown (文档 ID 794293.1)
ORA-1089 During Shutdown Immediate (文档 ID 1014091.102)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了