ORA-01102: cannot mount database in EXCLUSIVE mode

白石溪頭發表於2020-12-01

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-01102: cannot mount database in EXCLUSIVE mode


alert告警日誌中 

sculkget: failed to lock /u01/app/oracle//product/10.2.0/db_1/dbs/lkEPPS exclusive


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.


本文轉自 : https://www.cnblogs.com/kerrycode/p/3656655.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31440090/viewspace-2738558/,如需轉載,請註明出處,否則將追究法律責任。

相關文章