Applies to:
Oracle Database - Enterprise Edition -
Version 8.1.7.4 to 11.2.0.3 [Release 8.1.7 to 11.2]
Information in this document applies to any platform.
***Checked for relevance on 18-Nov-2011***
Symptoms
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...
OR
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
Changes
Cause
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
...
*.control_files='xx/control01.ctl','xx/control02.ctl','xx/control03.ctl'
*.db_name=ISODDEV
...
When the database is started using any of the pfiles the database being
started is INST1 which locks the file INST2.
Solution
Delete or
rename the file $ORACLE_HOME/dbs/lkinst<instance_name>
A new file will be created when the instance is started up again.
OR
Change the
parameter file to have the correct entries for the control_files and
db_name belonging to the individual databases.
|