ORA-01102: cannot mount database in EXCLUSIVE mode 错误,核心原因是数据库尝试以独占(EXCLUSIVE)模式挂载,但当前数据库实例已经被其他进程占用,或者相关的锁文件 / 共享内存未正确释放。
错误原因分析
这个错误通常由以下几种情况导致:
- 数据库实例已经在本地或远程服务器上启动(可能是后台残留进程)。
- 数据库的锁文件(
lk<ORACLE_SID>)未被正确删除,导致系统认为实例仍在运行。 - 共享内存段(Shared Memory)或信号量(Semaphore)未释放,占用了数据库资源。
- Oracle 监听或其他进程异常占用了数据库端口 / 资源。
解决方法:
①shutdown immediate; (立即终止用户会话,回滚未提交事务,常用且安全)
②lsnrctl stop
③cd $ORACLE_HOME/dbs 删除残余的lk开头的文件(所内存的文件lk和sgadef.dbf(若有)文件),比如lkORCL1 /bin/rm -f lk*
④查看共享内存段
ipcs -map
根据id号清除共享内存段:
ipcs -map |awk ‘{if($2==”oracle”){print $1}}’ |while read line;do [ -n $line ] || continue;ipcrm -m $line;done
⑤查看信号量
ipcs -s
根据semid清除信号量
ipcrm -s <semid>
⑥sqlplus / as sysdba
⑦startup;
⑧lsnrctl start
Categories:
数据库运维