ITPub博客

首页 > 数据库 > Oracle > ORA-01102错误分析

ORA-01102错误分析

原创 Oracle 作者:xinxinhg 时间:2004-11-10 14:10:02 0 删除 编辑

STARTUP时的错误!

[@more@]

检查本机是否有两个Oracle 服务,启动时可以制定那一个启动.
c:>Set Oracle_sid=test1
c:>sqlplus /nolog
sql>conn / as sysdba
sql>startup mount pfile='fullpath'

补充:

作者Blog:http://blog.csdn.net/hrb_qiuyb/

Oracle起动库时1102报错处理  

作者Blog:http://blog.csdn.net/hrb_qiuyb/

一、提出问题

 

实际过程中有时我们会遇到这样的问题,当你用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依然在运行着,所以库就没有启动,具体说来大体原因有如下几个:

 

1pmonsmonlwgwdbwr这些后台进程依然存在着

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

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

 

三、解决问题

 

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

 

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

oracle$cd $ORACLE_HOME/dbs

 

oracle$ls -l sgadef.dbf

如果存在删掉它

oracle$rm sgadef.dbf

 

oracle$ls -l lk

如果存在删掉它

oracle$rm lk

 

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

 

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

 

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

oracle$kill -9 pid

 

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

 

1)清共享内存段

 

oracle$ipcs -m   --显示一下,ownerOracle用户的

oracle$ipcrm -m

 

2)清信号集

 

oracle$ipcs -s   --显示一下,ownerOracle用户的

oracle$ipcrm -s

 

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/166555/viewspace-780308/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORA-03113错误分析
下一篇: ORA-12560错误分析
请登录后发表评论 登录
全部评论

注册时间:2008-09-28

  • 博文量
    43
  • 访问量
    1927551