ORA-01102: cannot mount database in EXCLUSIVE mode- DB关闭后进程未彻底停止

本文介绍了解决Oracle数据库启动时遇到的ORA-01102错误的方法。该错误通常由未释放的资源导致,文章详细记录了排查步骤及最终解决方案,包括删除锁定文件和强制关闭相关进程。

 

 

今天启动数据库 遇到ORA-01102: cannot mount database in EXCLUSIVE mode 问题

 

What's the problem

SQL> startup   

ORACLE instance started.

 

Total System Global Area 6308233216 bytes

Fixed Size                  2093288 bytes

Variable Size            1073745688 bytes

Database Buffers         5217714176 bytes

Redo Buffers               14680064 bytes

ORA-01102: cannot mount database in EXCLUSIVE mode

 

What's the root cause?

 

 

 

出现1102错误可能有以下几种可能:
一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
 
二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,
1、 Oracle的共享内存段或信号量没有被释放;
2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。
 
首先,虽然我们的系统是HA系统,但是备节点的实例始终处在关闭状态,这点通过在备节点上查数据库状态可以证实。
其次、是因系统掉电引起数据库宕机的,系统在接电后被重启,因此我们排除了第二种可能种的1、2点。最可疑的就是第3点了。
查$ORACLE_HOME/dbs目录:
$ cd $ORACLE_HOME/dbs
$ ls sgadef*
sgadef* not found
$ ls lk*
lkHPUSAGED  lkHPUSAGEDB
[oracle@3823svr dbs]$ rm lkHPUSA*
 
果然,lk<sid>文件没有被删除。将它删除掉
$ rm lk*
 
再启动数据库,还是失败。
关闭数据库再查,发现SHUTDONW后进程还存在没彻底关闭
[oracle@3823svr dbs]$ export ORACLE_SID=hpusage
[oracle@3823svr dbs]$ ps -ef|grep hpusage
oracle    6899     1  0 Jun30 ?        00:00:00 ora_pmon_hpusage
oracle    6901     1  0 Jun30 ?        00:00:00 ora_psp0_hpusage
oracle    6903     1  0 Jun30 ?        00:00:00 ora_mman_hpusage
oracle    6905     1  0 Jun30 ?        00:00:02 ora_dbw0_hpusage
oracle    6907     1  0 Jun30 ?        00:00:00 ora_lgwr_hpusage
oracle    6909     1  0 Jun30 ?        00:00:02 ora_ckpt_hpusage
oracle    6911     1  0 Jun30 ?        00:00:02 ora_smon_hpusage
oracle    6913     1  0 Jun30 ?        00:00:00 ora_reco_hpusage
oracle    6915     1  0 Jun30 ?        00:00:01 ora_cjq0_hpusage
oracle    6917     1  0 Jun30 ?        00:00:00 ora_mmon_hpusage
oracle    6919     1  0 Jun30 ?        00:00:05 ora_mmnl_hpusage
oracle    6921     1  0 Jun30 ?        00:00:00 ora_d000_hpusage
oracle    6923     1  0 Jun30 ?        00:00:00 ora_s000_hpusage
oracle    6927     1  0 Jun30 ?        00:00:02 ora_arc0_hpusage
oracle    6929     1  0 Jun30 ?        00:00:01 ora_arc1_hpusage
oracle    6959     1  0 Jun30 ?        00:00:00 ora_qmnc_hpusage
oracle    6991     1  0 Jun30 ?        00:00:19 ora_j000_hpusage
oracle    7007     1  0 Jun30 ?        00:00:00 ora_q000_hpusage
oracle    7009     1  0 Jun30 ?        00:00:00 ora_q001_hpusage
oracle   17736     1  0 Jun30 ?        00:00:12 ora_j001_hpusage
oracle   18151     1  0 Jun30 ?        00:00:00 ora_j002_hpusage
oracle   18160     1  0 Jun30 ?        00:00:00 ora_j003_hpusage
oracle   18351     1  0 Jun30 ?        00:00:00 ora_j004_hpusage
oracle   18353     1  0 Jun30 ?        00:00:00 ora_j005_hpusage
oracle   18541     1  0 Jun30 ?        00:00:00 ora_j006_hpusage
oracle   18543     1  0 Jun30 ?        00:00:00 ora_j007_hpusage
oracle   18728     1  0 Jun30 ?        00:00:00 ora_j008_hpusage
oracle   18730     1  0 Jun30 ?        00:00:00 ora_j009_hpusage
oracle   21866 20872  0 04:17 pts/4    00:00:00 grep hpusage
What's the solution
Kill所有DB进程,重启数据库,成功
1. Kill 所有跟 hpusagedb相关的进程
[oracle@3823svr dbs]$ ps  -ef|grep hpusage |awk '{print $2}'|xargs kill -9
2. 重启DB成功
SQL> startup
ORACLE instance started.
Total System Global Area 6308233216 bytes
Fixed Size                  2093288 bytes
Variable Size            1073745688 bytes
Database Buffers         5217714176 bytes
Redo Buffers               14680064 bytes
Database mounted.
Database opene

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值