重庆思庄Oracle、Redhat认证学习论坛
标题:
ORA-01102的解决办法
[打印本页]
作者:
王亮
时间:
2020-10-28 16:17
标题:
ORA-01102的解决办法
本帖最后由 王亮 于 2020-10-28 16:18 编辑
启动数据库时报ORA-01102: cannot mount database in EXCLUSIVE mode错
SQL> startup mount
ORACLE instance started.
Total System Global Area 608174080 bytes
Fixed Size 1220844 bytes
Variable Size 176164628 bytes
Database Buffers 427819008 bytes
Redo Buffers 2969600 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode
解决办法:
1、重启系统,有坑能是第一次起库,而11g自动管理sga和pga的机制没有调节好导致的。reboot就可以了
2、重启解决不了,按照以下的操作进行。
分析原因:
一、在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*
/u01/app/oracle/product/ 11.2.0/db_1/dbs/lkORCL
lkORCL
果然,lk<sid>文件没有被删除。将它删除掉
$ rm lk*
再次启动时又遇到下面的错误,不过别担心,继续后面的操作就搞定
SQL> startup mount
ORACLE instance started.
Total System Global Area 608174080 bytes
Fixed Size 1220844 bytes
Variable Size 176164628 bytes
Database Buffers 427819008 bytes
Redo Buffers 2969600 bytes
ORA-00205: error in identifying control file, check alert log for more info : (
查看共享内存段
[root@orcl ~]# ipcs -map
------ Shared Memory Creator/Last-op --------
shmid owner cpid lpid
3454 grid 4320 6438
3579 grid 4367 6438
3548576 oracle 31502 16728
根据ID号清楚共享内存段
ipcrm –m 354857
查看信号量
[root@orcl ~]# ipcs -s
key semid owner perms nsems
0x17ff6451 458757 oracle 640 34
清除oracle的信号量
[root@orcl ~]# ipcrm -s 458757
再次查询确认
[root@orcl ~]# ipcs -s
------ Semaphore Arrays --------
key semid owner perms nsems
再查询共享内存段也ok了!
[root@orcl ~]# ipcs -m
如果是Oracle进程没有关闭,
$kill -9 <PID>
欢迎光临 重庆思庄Oracle、Redhat认证学习论坛 (http://bbs.cqsztech.com/)
Powered by Discuz! X3.2