ORA-01102: cannot mount database in EXCLUSIVE mode (During database startup)

SQL> startup

ORACLE instance started.

 

Total System Global Area 285212672 bytes

Fixed Size 1218992 bytes

Variable Size 79693392 bytes

Database Buffers 201326592 bytes

Redo Buffers 2973696 bytes

ORA-01102: cannot mount database in EXCLUSIVE mode

 

Cause: There are some client shadow processes hanging. Although the lk<SID> file is deleted the hanging processes still have a lock on the open  file handle. This prevents the database to startup although a new lk<SID> file can be created successfully.

 

An oracle process (background or shadow process) that exists while the instance is not started (crashed or not cleanly stopped) can have a lock on a file while this file is actually removed from the system. This is because on UNIX there is still a lock on the open file handle.

 

Solution:

Verify if there are existing oracle processes for the database:

 

[oracle@servername ~]$  ps -ef | grep $ORACLE_SID

oracle    1525     1  0 10:13 ?        00:00:03 ora_j000_GRIDDB3

oracle    1527     1  0 10:13 ?        00:00:01 ora_j001_GRIDDB3

oracle    4198     1  0 10:27 ?        00:00:00 oracleGRIDDB3 (LOCAL=NO)

oracle    7479     1  0 May30 ?        00:00:00 oracleGRIDDB3 (LOCAL=NO)

.

.

.

oracle   21246     1  0 May30 ?        00:00:09 ora_pmon_GRIDDB3

oracle   21248     1  0 May30 ?        00:00:11 ora_psp0_GRIDDB3

oracle   21250     1  0 May30 ?        00:12:29 ora_vktm_GRIDDB3

oracle   21254     1  0 May30 ?        00:00:01 ora_gen0_GRIDDB3

oracle   21256     1  0 May30 ?        00:00:02 ora_diag_GRIDDB3

oracle   21258     1  0 May30 ?        00:00:02 ora_dbrm_GRIDDB3

oracle   21260     1  0 May30 ?        00:01:00 ora_dia0_GRIDDB3

oracle   21262     1  0 May30 ?        00:00:01 ora_mman_GRIDDB3

oracle   21264     1  0 May30 ?        00:00:11 ora_dbw0_GRIDDB3

oracle   21266     1  0 May30 ?        00:00:24 ora_lgwr_GRIDDB3

oracle   21268     1  0 May30 ?        00:00:16 ora_ckpt_GRIDDB3

oracle   21270     1  0 May30 ?        00:00:07 ora_smon_GRIDDB3

oracle   21272     1  0 May30 ?        00:00:00 ora_reco_GRIDDB3

oracle   21274     1  0 May30 ?        00:00:16 ora_mmon_GRIDDB3

.

.

 

Kill the hanging processes to release the lock on the file handle:

 

[oracle@servername ~]$ kill -9 `ps -ef | grep $ORACLE_SID | grep -v grep | awk '{print $2}'`

 

[oracle@sservername ~]$  ps -ef | grep $ORACLE_SID

oracle   11990 11927  0 10:50 pts/1    00:00:00 grep GRIDDB3

Comments