ORA-01102: cannot mount database in EXCLUSIVE mode

安装完ORACEL 10g数据库后,启动数据库时遇到ORA-01102: cannot mount database in EXCLUSIVE mode

























查看告警日志文件,发现有ORA-09968: unable to lock file 和Linux-x86_64 Error: 11: Resource temporarily unavailable等错误

[oracle@DB-Server bdump]$ tail -20f alert_epps.log 
 
SMON started with pid=8, OS id=24482
 
RECO started with pid=9, OS id=24484
 
CJQ0 started with pid=10, OS id=24486
 
MMON started with pid=11, OS id=24488
 
Thu Apr 10 13:53:42 2014
 
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
 
MMNL started with pid=12, OS id=24490
 
Thu Apr 10 13:53:42 2014
 
starting up 1 shared server(s) ...
 
Thu Apr 10 13:53:42 2014
 
ALTER DATABASE MOUNT
 
Thu Apr 10 13:53:42 2014
 
sculkget: failed to lock /u01/app/oracle//product/10.2.0/db_1/dbs/lkEPPS exclusive
 
sculkget: lock held by PID: 20337
 
Thu Apr 10 13:53:42 2014
 
ORA-09968: unable to lock file
 
Linux-x86_64 Error: 11: Resource temporarily unavailable
 
Additional information: 20337
 
Thu Apr 10 13:53:42 2014
 
ORA-1102 signalled during: ALTER DATABASE MOUNT...
 

'

第一次遇到这种情况,于是网上搜索了一下资料,找到一篇相关文章http://blog.itpub.net/12272958/viewspace-716020,介绍了出现这种错误的三种情况:

      a、 Oracle的共享内存段或信号量没有被释放;

      b、 Oracle的后台进程(如SMON、PMON、DBWn等)没有被关闭;

      c、 用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除。

看了文章前面一部分。便武断的觉得应该是第三者情况(由于告警日志中出现
了相关信息):“用于锁内存的文件lk<sid>和sgadef<sid>.dbf文件没有被删除”。于是动手操作(太心急,这
毛病老是难以改变),关闭数据库实例,删除/u01/app/oracle/product/10.2.0/db_1/dbs/lkEPPS文件后,重新
启动数据库。结果作者的经历又在我身上重演了一次。

启动时候报ORA-00205错误

SQL> shutdown immediate;
 
ORA-01507: database not mounted
 
ORACLE instance shut down.
 
SQL> startup
 
ORACLE instance started.
 
Total System Global Area 5033164800 bytes
 
Fixed Size 2027672 bytes
 
Variable Size 905973608 bytes
 
Database Buffers 4110417920 bytes
 
Redo Buffers 14745600 bytes
 
ORA-00205: error in identifying control file, check alert log for more info
 

查看告警日志,有如下错误信息:

RECO started with pid=9, OS id=24887
 
CJQ0 started with pid=10, OS id=24889
 
MMON started with pid=11, OS id=24891
 
Thu Apr 10 14:04:05 2014
 
starting up 1 dispatcher(s) for network address '(ADDRESS=(PARTIAL=YES)(PROTOCOL=TCP))'...
 
MMNL started with pid=12, OS id=24894
 
Thu Apr 10 14:04:06 2014
 
starting up 1 shared server(s) ...
 
Thu Apr 10 14:04:06 2014
 
ALTER DATABASE MOUNT
 
Thu Apr 10 14:04:06 2014
 
ORA-00202: control file: '/u01/app/oracle/oradata/epps/control01.ctl'
 
ORA-27086: unable to lock file - already in use
 
Linux-x86_64 Error: 11: Resource temporarily unavailable
 
Additional information: 8
 
Additional information: 20341
 
Thu Apr 10 14:04:09 2014
 
ORA-205 signalled during: ALTER DATABASE MOUNT...
 

于是索性静下心来多了解一下这个问题,在网上查看了大量关于ORA-01102的文章。这篇博客http://blog.itpub.net/20674423/viewspace-711545对这个问题阐述得比较清晰。下面是Metalink关于ORA-01102的解释以及解决方法:

Problem Description:

====================

You are trying to startup the database and you receive the following error:

ORA-01102: cannot mount database in EXCLUSIVE mode

Cause: Some other instance has the database mounted exclusive or shared.

Action: Shutdown other instance or mount in a compatible mode.

Problem Explanation:

====================

A database is started in EXCLUSIVE mode by default. Therefore, the ORA-01102 error is misleading and may have occurred due to one of the following reasons:

- there is still an "sgadef<sid>.dbf" file in the "ORACLE_HOME/dbs"  directory

- the processes for Oracle (pmon, smon, lgwr and dbwr) still exist

- shared memory segments and semaphores still exist even though the

database has been shutdown

- there is a "ORACLE_HOME/dbs/lk<sid>" file

Search Words:

=============

ORA-1102, crash, immediate, abort, fail, fails, migration

Solution Description:

=====================

Verify that the database was shutdown cleanly by doing the following:

1. Verify that there is not a "sgadef<sid>.dbf" file in the directory "ORACLE_HOME/dbs".

        % ls $ORACLE_HOME/dbs/sgadef<sid>.dbf  If this file does exist, remove it.

        % rm $ORACLE_HOME/dbs/sgadef<sid>.dbf

2. Verify that there are no background processes owned by "oracle"

       % ps -ef | grep ora_ | grep $ORACLE_SID

If background processes exist, remove them by using the Unix

command "kill". For example:

     % kill -9 <rocess_ID_Number>

3. Verify that no shared memory segments and semaphores that are owned by "oracle" still exist

% ipcs -b

If there are shared memory segments and semaphores owned by "oracle", remove the shared memory segments

        % ipcrm -m <Shared_Memory_ID_Number>

and remove the semaphores

       % ipcrm -s <Semaphore_ID_Number>

NOTE: The example shown above assumes that you only have one

database on this machine. If you have more than one

database, you will need to shutdown all other databases

before proceeding with Step 4.

4. Verify that the "$ORACLE_HOME/dbs/lk<sid>" file does not exist

5. Startup the instance

Solution Explanation:

=====================

The "lk<sid>" and
"sgadef<sid>.dbf" files are used for locking shared memory. It
seems that even though no memory is allocated, Oracle thinks memory is
still locked. By removing the "sgadef" and "lk" files you remove any
knowledge oracle has of shared memory that is in use. Now the database
can start.

时间: 2024-09-21 13:59:18

ORA-01102: cannot mount database in EXCLUSIVE mode的相关文章

解决ORA-01102: cannot mount database in EXCLUSIVE mode问题

今天在STARTUP一数据库时,发生如下错误:   SQL> conn /as sysdba Connected to an idle instance. SQL> startup ORACLE instance started. Total System Global Area 276824064 bytes Fixed Size                   778736 bytes Variable Size             137371152 bytes Database

exchange 2007数据库无法恢复 Failed to mount database &amp;amp;#x27;Mailbox Database&amp;amp;#x27; (着急,在线等)

问题描述 exchange2007服务器因为磁盘阵列问题导致系统崩溃,数据从磁盘阵列读出来以后,执行装载操作报-1018错误.根据网上搜索,我们执行了eseutil/p操作,由于邮件数据size很大,一直修复过程中.期间当我们要登陆主机再次确认是否修复完成时,无法登陆主机了!非常着急,只能通过网络映射数据文件所在目录检查文件情况,发现文件时间一直没有更新了(执行修复时,文件会随时进行更新),据此我们判断已经修复完成,但由于一直无法登陆主机,所以只能重启.重启后尝试再次进行数据库装载,失败,此时操

Oracle起动库时1102报错处理

oracle 一.提出问题   实际过程中有时我们会遇到这样的问题,当你用startup试图启动数据库时会遇到ORA-01102的报错.我们可以在Unix下切换到Oracle的用户,执行一下oerr ora 1102便会看到有关1102的简短的描述,如下:   rp2$[/home/ora2]oerr ora 1102 01102, 00000, "cannot mount database in EXCLUSIVE mode" // *Cause:  Some other insta

RAC ORA-01102

[grid@m1 ~]$ srvctl start database -d sreport PRCR-1079 : Failed to start resource ora.sreport.db CRS-5017: The resource action "ora.sreport.db start" encountered the following error:  ORA-01102: cannot mount database in EXCLUSIVE mode . For det

ORACLE自启设置与导入导出的方法

  linux下系统开机oracle自启动 以root身份登录: $su - root 1.linux下oracle自带的dbstart和dbshut没反应: 修改Oracle系统配置文档/etc/oratab文档: #vi /etc/oratab /etc/oratab 格式为: SID:ORACLE_HOME:AUTO 把AUTO域配置为Y(大写),我的为: oradb:/opt/u01/app/oracle/product/9.2.0.4:Y 只有这样,oracle 自带的dbstart和

ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by &#039;inst 1, osid 5166&#039;

凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认:   1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:packet reader failure   2. 使用lsnrctl status检查监听,一直没有响应,这个是极少见的情况.   3. 检查数据库状态为OPEN,使用nmon检查系统资源.如下一张截图所示,CPU利用率不高,但是CPU Wait%非常高.这意味着I/O不正常.可能出现了IO等待和

ORACLE_SID、DB_NAME、INSTANCE_NAME、DB_DOMIAN、GLOBAL_NAME

--============================================================= -- ORACLE_SID.DB_NAME.INSTANCE_NAME.DB_DOMIAN.GLOBAL_NAME --=============================================================       ORACLE_SID.DB_NAME.INSTANCE_NAME.DB_DOMIAN.GLOBAL_NAMES是Or

刚装完的数据库报错 ORA-01102 ORA-1102 signalled during....

     昨天刚装完的一个数据库在启动的时候,报错ORA-01102,而且安装的时候也没有看到哪里有报错信息,一路都比较顺利, 而且这也是第一次我碰到这个问题,当时我首先就检查了alert日志文件,并把相关的错误信息在metalink上查看过了, 经过分析后判断是由于进程间通信被争用导致,以下是我处理该问题的一个思路,并在最后附上了metalink原文以及朋友对该 问题的一个理解和处理办法.      为什么会发生如下错误,原因是多个用户同时去访问同一个资源就会发生独占模式, 因为在Linux里

解决ORA-01078: failure in processing system parameters问题

数据库在安装完成后,在启动时,报错误:ORA-01078: failure in processing system parameters [oracle@localhost ~]$ sqlplus /nolog SQL*Plus: Release 10.2.0.4.0 - Production on Fri Dec 2 15:56:00 2011 Copyright (c) 1982, 2007, Oracle.  All Rights Reserved. SQL> conn /as sysd