Oracle起动库时1102报错处理

oracle

一、提出问题

 

实际过程中有时我们会遇到这样的问题,当你用startup试图启动数据库时会遇到ORA-01102的报错。我们可以在Unix下切换到Oracle的用户,执行一下oerr ora 1102便会看到有关1102的简短的描述,如下:

 

rp2$[/home/ora2]oerr ora 1102

01102, 00000, "cannot mount database in EXCLUSIVE mode"

// *Cause:  Some other instance has the database mounted exclusive or shared.

// *Action: Shutdown other instance or mount in a compatible mode

 

看了这个1102的简短的解释你一定有些迷惑,因为它有一些的误导性。如下我便来分析一下问题产生的原因,并给出解决的办法。

 

二、分析原因

 

当你启动数据库遇到1102报错时,之前的数据库的down操作一般都不是正常完成的,或由于一些异常使Oracle在操作系统中残留一些内存结构,Pmon等一几个进程依然存在等原因使Oracle误认为Instance依然在运行着,所以库就没有启动,具体说来大体原因有如下几个:

 

1、pmon、smon、lwgw及dbwr这些后台进程依然存在着

2、Oracle开辟的共享内存没有释放掉

3、"lk<sid>" and "sgadef<sid>.dbf"这两个用于锁内存的文件存在着。

 

三、解决问题

 

知道了原因,解决起来就简单多了,办法如下:

 

1、看一下"lk<sid>" and "sgadef<sid>.dbf"这两个文件是不是存在着,如果存在将其删掉。

oracle$cd $ORACLE_HOME/dbs

 

oracle$ls -l sgadef<sid>.dbf

如果存在删掉它

oracle$rm sgadef<sid>.dbf

 

oracle$ls -l lk<sid>

如果存在删掉它

oracle$rm lk<sid>

 

2、看是不是有后台进程存在了

 

oracle$ps -ef | grep ora_ | grep $ORACLE_SID

 

如果有pmon这些后台进程的残留,kill -9掉它

oracle$kill -9 pid

 

3、看一下oracle的共享内存段及信号集(semaphores)是不是还存在着

 

1)清共享内存段

 

oracle$ipcs -m   --显示一下,看owner是Oracle用户的

oracle$ipcrm -m <Shared_Memory_ID>

 

2)清信号集

 

oracle$ipcs -s   --显示一下,看owner是Oracle用户的

oracle$ipcrm -s <Semaphore_ID>

 

四、应该没问题了,再试一下吧^-^

                      

时间: 2024-09-17 03:51:33

Oracle起动库时1102报错处理的相关文章

weblogic连接池-Java调用Oracle存储过程传入数组参数报错

问题描述 Java调用Oracle存储过程传入数组参数报错 weblogic连接池 JNDI提供的链接保存 Oracle数组 报错 oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection oracle.jdbc.driver.T4CConnection cannot be cast to oracle.jdbc.OracleConnection 大家好,我在用weblogic连接池 JNDI

javaweb-在ssh 中 用ServletActionContext获取session时启动报错

问题描述 在ssh 中 用ServletActionContext获取session时启动报错 ServletActionContext.getRequest().getSession(); 怎么才能在启动的时候就有ServletActionContext,而不用在ActionSupport处理请求时在获取 解决方案 是报空指针吗? 没有请求时 ServletActionContext.getRequest() 为null 解决方案二: http://blog.csdn.net/suncaoyo

nexus bundle方式安装时启动报错

本地下载 bundle方式的 nexus,启动时,报错:the nexus service was launched,but failed to start.如下图: 需要修改NEXUS_HOME\bin\jsw\conf\wrapper.conf 配置文件, 如此之后,可正常启动nexus. 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/Linux/

vs2010查看quartz.net 2.1.2的源码时其中一报错的解决方法

问题: 使用vs2010查看quartz.net 2.1.2的源码时,报错: ..\Quartz.NET-2.1.2\server\Quartz.Server\Quartz.Server.2010.csproj : error  : 无法读取项目文件"Quartz.Server.2010.csproj". ..\Quartz.NET-2.1.2\server\Quartz.Server\Quartz.Server.2010.csproj(178,3): 未找到导入的项目"..

tomcat启动报错-SSH + Oracle 整合开发 启动服务报错,运行查询操作,没影响

问题描述 SSH + Oracle 整合开发 启动服务报错,运行查询操作,没影响 信息: Initializing Spring root WebApplicationContextlog4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).log4j:WARN Please initialize the log4j system properly.2013-1

在使用websphere时,报错使用 LTPA 时认证失败。异常为 &amp;amp;lt;null&amp;amp;gt;

问题描述 在使用websphere时,报错使用 LTPA 时认证失败.异常为 <null> [15-3-10 11:11:30:943 CST] 00000047 SystemErr R com.ibm.websphere.wim.exception.PasswordCheckFailedException: CWWIM4537E 对于"eoms"主体名称,找不到主体.

c#-C#调用C DLL(char *传出参数)时,报错参数不匹配

问题描述 C#调用C DLL(char *传出参数)时,报错参数不匹配 public class LLht { //手持机下载上传 [DllImport(""llht.dll"" CallingConvention = CallingConvention.StdCall CharSet = CharSet.Ansi SetLastError = true ExactSpelling = true)] public static extern int llht_dow

wamp环境中,本可以使用GD库,但在zend中无法使用GD库,会报错这是为什么,出了什么问题

问题描述 wamp环境中,本可以使用GD库,但在zend中无法使用GD库,会报错这是为什么,出了什么问题 在zend中无法使用GD库,会报错提示GD库函数未定义 解决方案 http://blog.csdn.net/authorzhh/article/details/7566853 看看是不是扩展没有开 解决方案二: 扩展开了, extension=php_gd2.dll 前分号去掉了,还是没解决

求助!tomcat启动正常,访问javaweb时控制台报错

问题描述 求助!tomcat启动正常,访问javaweb时控制台报错 访问javaweb项目时报错,在myeclise6.0上无该异常,在myeclise10上报如下异常:org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet jsp threw exceptionjavax.xml.parsers.FactoryConfigurationError: Provider org.a