ORA-01102: cannot mount database in EXCLUSIVE mode


SQL> Alter database mount;
Alter database mount
*
ERROR at line 1:
ORA-01102: cannot mount database in EXCLUSIVE mode
SQL>

Cause: An instance tried to mount the database in exclusive mode, but some other instance has already mounted the database in exclusive or parallel mode.

Action: Either mount the database in parallel mode or shut down all other instances before mounting the database in exclusive mode.

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
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.

Solution:

SQL> shu immediate;
ORA-01507: database not mounted

ORACLE instance shut down.
SQL> exit;
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 – 64bit Production
With the Partitioning, OLAP and Data Mining options

[oracle@DBA-RHEL4-10G ~]$ ps -ef | grep ora_ | grep $ORACLE_SID

oracle 13123 1 0 02:29 ? 00:00:00 ora_pmon_test85
oracle 13125 1 0 02:29 ? 00:00:01 ora_psp0_test85
oracle 13127 1 0 02:29 ? 00:00:00 ora_mman_test85
oracle 13129 1 0 02:29 ? 00:00:22 ora_dbw0_test85
oracle 13131 1 0 02:29 ? 00:00:19 ora_lgwr_test85
oracle 13133 1 0 02:29 ? 00:02:07 ora_ckpt_test85
oracle 13135 1 0 02:29 ? 00:00:02 ora_smon_test85
oracle 13137 1 0 02:29 ? 00:00:00 ora_reco_test85
oracle 13139 1 0 02:29 ? 00:00:00 ora_cjq0_test85
oracle 13141 1 0 02:29 ? 00:00:01 ora_mmon_test85
oracle 13143 1 0 02:29 ? 00:00:02 ora_mmnl_test85
oracle 13145 1 0 02:29 ? 00:00:00 ora_d000_test85
oracle 13147 1 0 02:29 ? 00:00:00 ora_s000_test85
oracle 13151 1 0 02:29 ? 00:00:00 ora_qmnc_test85
oracle 13218 1 0 02:29 ? 00:00:00 ora_q001_test85
oracle 13220 1 0 02:29 ? 00:00:00 ora_q002_test85
oracle 18163 1 0 21:29 ? 00:00:00 ora_j000_test85
[oracle@DBA-RHEL4-10G ~]$
[oracle@DBA-RHEL4-10G ~]$ kill -9 <process-list>
[oracle@DBA-RHEL4-10G ~]$

Verify that the “$ORACLE_HOME/dbs/lk<sid>” file does not exist .If it is present copy it to some temp location for safety and delete it from the location  $ORACLE_HOME/dbs/

Now start the instance.

[oracle@DBA-RHEL4-11G dbs]$ sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 – Production on Thu Dec 6 21:32:46 2012

Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to an idle instance.

SQL> startup mount;
ORACLE instance started.

Total System Global Area 587202560 bytes
Fixed Size 2022504 bytes
Variable Size 163578776 bytes
Database Buffers 415236096 bytes
Redo Buffers 6365184 bytes
Database mounted.
SQL> Alter database open;

Database altered

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s