oracle数据库建库的时候报错,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” 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   –显示一下,看owner是oracle用户的

oracle$ipcrm -m

2)清信号集

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

oracle$ipcrm -s

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值