Showing posts with label 12c. Show all posts
Showing posts with label 12c. Show all posts

Tuesday, April 30, 2019

ORA-01102: cannot mount database in EXCLUSIVE mode

Problem

ORA-01102: cannot mount database in EXCLUSIVE mode during database instance startup

sqlplus / as sysdba
QL*Plus: Release 12.2.0.1.0 Production on Tue Apr 30 21:26:57 2019

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

Connected to an idle instance.

SQL> startup;
ORACLE instance started.

Total System Global Area 6174015488 bytes
Fixed Size                  8634320 bytes
Variable Size            1241514032 bytes
Database Buffers         4915724288 bytes
Redo Buffers                8142848 bytes
ORA-01102: cannot mount database in EXCLUSIVE mode

Solution

Same as https://sk.solutionmentors.com/2019/04/ora-01012-not-logged-on-startup-failed.html, seems this problem appeared because database was not stopped properly.

Follow great article http://www.dba-oracle.com/t_ora_01102_cannot_mount_database_in_exclusive_mode.htm

+++++++++++

POSSIBLE SOLUTION:
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 <Process_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. This is what caused issue in our case. Simple removal of this file did the trick.

5. Startup the instance

Related issues
https://sk.solutionmentors.com/2019/04/ora-01012-not-logged-on-startup-failed.html
https://sk.solutionmentors.com/2019/04/ora-27125-unable-to-create-shared.html

Reference
http://www.dba-oracle.com/t_ora_01102_cannot_mount_database_in_exclusive_mode.htm

ORA-27125: unable to create shared memory segment during startup

Problem

After reboot, unable to startup Oracle 12c database instance (Red Hat Enterprise Server 7.6)

ORA-27125: unable to create shared memory segment
Linux-x86_64 Error: 28: No space left on device
Additional information: 3822
Additional information: 6157238272

Solution

Verify OS kernel.shmall memory setting.

1. Get current value 
cat /proc/sys/kernel/shmall
1677722

This seems to be too high..

2. Determine page size
getconf PAGE_SIZE
4096

3. Calculate recommended value for shmall

shmall = <total size of SGA>/<page size>

In our case, we have 16GB RAM, so, shmall = 16 * 1024 * 1024 * 1024 / 4096 = 4194304

4. Update /etc/sysctl.conf
vi /etc/sysctl.conf
kernel.shmall=4194304
sudo sysctl -p

5. Verify  kernel.shmall again
cat /proc/sys/kernel/shmall
4194304

6. Start Oracle instance
sudo su - oracle
sqlplus / as sysdba
startup;

This of course leads to another error..


References


Formula to set proper values for max processes, sessions and transactions in Oracle

Problem

Need to adjust max number of sessions in Oracle DB.

Solution

Standard formula looks like:

PROCESSES = Operating System Dependant
SESSIONS = (1.1 * PROCESSES) + 5
TRANSACTIONS = 1.1 * SESSIONS

alter system set sessions=1000 scope=spfile;
alter system set processes=905 scope=spfile;
alter system set transactions=1100 scope=spfile;

shutdown immediate;
startup;