oracle运维——ORA-01102错误处理

ORA-01102: cannot mount database in EXCLUSIVE mode 错误,核心原因是数据库尝试以独占(EXCLUSIVE)模式挂载,但当前数据库实例已经被其他进程占用,或者相关的锁文件 / 共享内存未正确释放。

错误原因分析

这个错误通常由以下几种情况导致:

  1. 数据库实例已经在本地或远程服务器上启动(可能是后台残留进程)。
  2. 数据库的锁文件(lk<ORACLE_SID>)未被正确删除,导致系统认为实例仍在运行。
  3. 共享内存段(Shared Memory)或信号量(Semaphore)未释放,占用了数据库资源。
  4. 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: 数据库运维