ORA-01102: cannot mount database in EXCLUSIVE mode

ORA-01102: cannot mount database in EXCLUSIVE mode
今天在fedora上安装完10g后,测试数据库是否安装成功。STARTUP数据库时,发生如下错误:
 
  1. SQL> conn /as sysdba  
  2. Connected to an idle instance.  
  3. SQL> startup  
  4. ORACLE instance started.  
  5. Total System Global Area  591396864 bytes  
  6. Fixed Size                   1220724 bytes  
  7. Variable Size             167776140 bytes  
  8. Database Buffers         415236096  bytes  
  9. Redo Buffers                 7163904 bytes  
  10. ORA-01102: cannot mount database in EXCLUSIVE mode  
  11. SQL> shutdown immediate  
  12. ORA-01507: database not mounted  
  13.   
  14. ORACLE instance shut down.  


 
出现ORA-1102错误可能有以下几种可能:
一、在HA系统中,已经有其他节点启动了实例,将双机共享的资源(如磁盘阵列上的裸设备)占用了;
二、说明Oracle被异常关闭时,有资源没有被释放,一般有以下几种可能,
1、 Oracle的共享内存段或信号量没有被释放;
2、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;
3、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。
 
第一点,可以通过在备节点上查数据库状态来判断是否已启动实例。
第二点,如果系统是因为断电引起数据库宕机的,并且系统在接电被重启后,我们可以排除第二种可能的1、2点。接下来考虑第3点。
查$ORACLE_HOME/dbs目录: (这里我find / -name dbs 目录,然后删除了 /u01/app/oracle/product/11.2.0/dbhome_1/dbs 目录下的lkBROAD,怕删错了直接mv 文件 / 根目录了。)
  1. [oracle@localhost dbs]$ ls sgadef*  
  2. ls: cannot access sgadef*: No such file or directory  
  3. [oracle@localhost dbs]$ ls lk*  
  4. lkORCL  
  5. [oracle@localhost dbs]$   
lk<sid>文件没有被删除。将它删除掉
  1. [oracle@localhost dbs]$ rm lkORCL  
再启动数据库,成功。

如果是Oracle进程没有关闭,用以下命令查出存在的oracle进程:
  1. [root@localhost dbs]# ps -ef|grep oracle  
  2. root      2310  2358  0 16:00 pts/0    00:00:00 su - oracle  
  3. oracle    2311  2310  0 16:00 pts/0    00:00:00 -bash  
  4. root      2427  2403  0 10:47 pts/1    00:00:00 su - oracle  
  5. ……   

然后用kill -9命令杀掉进程
$kill -9 <PID>
 
总结:
当发生1102错误时,可以按照以下流程检查、排错:

1.如果是HA系统,检查其他节点是否已经启动实例;

2.检查Oracle进程是否存在,如果存在则杀掉进程; 

3.检查信号量是否存在,如果存在,则清除信号量;

4.检查共享内存段是否存在,如果存在,则清除共享内存段; 

5.检查锁内存文件lk<sid>和sgadef<sid>.dbf是否存在,如果存在,则删除。


ORA-00205: error in identifying control file, check alert log for more info错误处理办法。


再次启动时又遇到下面的错误,不过别担心,继续后面的操作就搞定

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@simply bdump]# ipcs -map

 

------ Shared Memory Creator/Last-op --------

shmid   owner  cpid    lpid

786444  root    6490   6438

819213  root    6549   6438

1409040 oracle   31502  16728

根据ID号清楚共享内存段

ipcrm –m 1409040

我这里操作是没有成功的,不过执行了下面的操作就ok了!

 

查看信号量

[root@simply bdump]# ipcs -s

 

key       semid      owner   perms    nsems

0x17ff6454 360448     oracle    640     154

 

清除oracle的信号量

[root@simply bdump]# ipcrm -s 360448

 

再次查询确认

[root@simply bdump]# ipcs -s

 

------ Semaphore Arrays --------

key  semid  owner  perms   nsems

 

再查询共享内存段也ok了!

[root@simply bdump]# ipcs -m(这里我看到一堆oracle进程,不过没管,再次重启OK了。)

 

如果是Oracle进程没有关闭,

$kill -9 <PID>



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值