ORA-09968, ORA-01102, ORA-10997 When Starting a Database

Applies to:

Oracle Database - Enterprise Edition - Version to [Release 8.1.7 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 18-Nov-2011***


Trying to startup a database on an UNIX server -having more than one database-, fails with the below errors:

sculkget: failed to lock /usr/local/oracle/product/10.2.0/dbs/lkISODDEV exclusive
sculkget: lock held by PID: xxxx
ORA-09968: unable to lock file
SVR4 Error: 11: Resource temporarily unavailable
Additional information: xxxx
ORA-1102 signalled during: ALTER DATABASE MOUNT...


 SQL> startup
ORA-10997: another startup/shutdown operation of this instance inprogress
ORA-09968: unable to lock file
Linux-x86_64 Error: 11: Resource temporarily unavailable




The strace for the startup process shows that the lock issue is on file $ORACLE_HOME/dbs/lkinst<instance_name> as below:

%strace -f -o strace_output.txt "sqlplus / as sysdba"

16456 open("/oracle/product/11.2.0/db_1/dbs/lkinstbantst1", O_RDWR|O_CREAT|O_EXCL, 0660) = -1 EEXIST (File exists)
16456 open("/oracle/product/11.2.0/db_1/dbs/lkinstbantst1", O_RDWR) = 8
16456 fcntl(8, F_SETFD, FD_CLOEXEC)     = 0
16456 fcntl(8, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=0, len=0}) = -1 EAGAIN (Resource temporarily unavailable)

For example:

The parameter files for two databases have the same entries for control_files and db_name like


When the database is started using any of the pfiles the database being started is INST1 which locks the file INST2.


Delete or rename the file $ORACLE_HOME/dbs/lkinst<instance_name>
A new file will be created when the instance is started up again.


Change the parameter file to have the correct entries for the control_files and db_name belonging to the individual databases.

 The above document taken from Oracle Doc ID 467251.1