博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle shutdown immediate遭遇ORA-24324 ORA-24323 ORA-01089
阅读量:6835 次
发布时间:2019-06-26

本文共 2207 字,大约阅读时间需要 7 分钟。

一数据库服务器执行shutdown immediate时,遇到了下面ORA错误,如下所示:

 
 
 
 
 
 
 
 
 
 
 
 
 

 

检查告警日志,发现其一直停留在"Job queue slave processes stopped".退出sqlplus然后重新登录,重新执行shutdown immediate

 

$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Fri Aug 5 11:03:45 2016

Copyright (c) 1982, 2007, Oracle. All Rights Reserved.

Connected.

SQL> shutdown immediate;

ORA-24324: service handle not initialized

ORA-24323: value not allowed

ORA-01089: immediate shutdown in progress - no operations are permitted

SQL>

 

 

后面退出会话,然后登陆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. 具体参考官方文档

4: 删除 sga and lk文件。

 

ipcs相关资料:

ipcs 命令往标准输出写入一些关于活动进程间通信设施的信息。如果没有指定任何标志,ipcs 命令用简短格式写入一些关于当前活动消息队列、共享内存段、信号量、远程队列和本地队列标题。

 

 

参考资料:

ORA-24324 During Startup or Shutdown (文档 ID 794293.1)

ORA-1089 During Shutdown Immediate (文档 ID 1014091.102)

转载地址:http://gaqkl.baihongyu.com/

你可能感兴趣的文章
Spring AOP动态代理-切面
查看>>
Spring整合JMS(四)——事务管理
查看>>
C#中获取当前应用程序的路径及环境变量
查看>>
ThinkPHP5.0中Redis的使用和封装
查看>>
使用dwz框架搭建网站后台
查看>>
为什么很多人喜欢把软件装在D盘,而不是系统盘C
查看>>
把json对象串转换成map对象
查看>>
十字消源码分享(基于libgdx开发)
查看>>
看到OSC有一期是:“OSChina 第 37 期高手问答 —— 消息队列服务”
查看>>
Quasar Akka Vertx Norbert 比较
查看>>
资源盗链困扰站长 安全狗内置盗链保护功能
查看>>
服务器安全股v4.0正式版发布 防火墙效能更强
查看>>
百度地图-解决新版百度定位失败问题
查看>>
Android Jetpack架构组件之 Room(使用、源码篇)
查看>>
Android WebView 支持H5图片上传<input type="file">
查看>>
PHP-FPM,Nginx,FastCGI 三者之间的关系
查看>>
这才是我想要的云盘工具
查看>>
iOS6.0下获取通讯录用户列表
查看>>
8个实用的响应式设计框架
查看>>
Objective-C中的内存管理
查看>>