Problem Symptoms
When one tries to start the Oracle Listener by executing the command "lsnrctl start" as UNIX user oracle, the following error messages appear:
---------------------------------
$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 10-APR-2014 20:36:19
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Starting /exlibris/app/oracle/product/11r2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /exlibris/app/oracle/product/11r2/network/admin/listener.ora
Log messages written to /exlibris/app/oracle/diag/tnslsnr/<server_name>/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<server_name>)(PORT=1521)))
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=REGISTER)))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
Linux Error: 1: Operation not permitted
Listener failed to start. See the error message(s) above...
---------------------------------
---------------------------------
$ lsnrctl start
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 10-APR-2014 20:36:19
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Starting /exlibris/app/oracle/product/11r2/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /exlibris/app/oracle/product/11r2/network/admin/listener.ora
Log messages written to /exlibris/app/oracle/diag/tnslsnr/<server_name>/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<server_name>)(PORT=1521)))
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=REGISTER)))
TNS-12555: TNS:permission denied
TNS-12560: TNS:protocol adapter error
TNS-00525: Insufficient privilege for operation
Linux Error: 1: Operation not permitted
Listener failed to start. See the error message(s) above...
---------------------------------
Cause
(1)
In the directory /var/tmp/.oracle there exist some socket files which do not belong to UNIX user oracle and group dba, but to another user (e.g. daemon) and another group (e.g. root).
Example:
$ ls -l /var/tmp/.oracle
4259873 0 srwxrwxrwx 1 daemon root 0 Mar 22 09:53 /var/tmp/.oracle/s#10534.1
4259874 0 srwxrwxrwx 1 daemon root 0 Mar 22 09:53 /var/tmp/.oracle/s#10534.2
4259865 0 srwxrwxrwx 1 daemon root 0 Mar 22 09:53 /var/tmp/.oracle/sREGISTER
(2)
When the Listener process starts, it tries to create the following socket files:
/var/tmp/.oracle/s#<pid>.1
/var/tmp/.oracle/s#<pid>.2
/var/tmp/.oracle/sREGISTER
where <pid> is the ID of the operating system process for the Listener.
As the file /var/tmp/.oracle/sREGISTER already exists and belongs to a UNIX user other than oracle, the Listener process (running with privileges of user oracle) cannot create a new socket file with that name. Therefore the Listener fails to start.
In the directory /var/tmp/.oracle there exist some socket files which do not belong to UNIX user oracle and group dba, but to another user (e.g. daemon) and another group (e.g. root).
Example:
$ ls -l /var/tmp/.oracle
4259873 0 srwxrwxrwx 1 daemon root 0 Mar 22 09:53 /var/tmp/.oracle/s#10534.1
4259874 0 srwxrwxrwx 1 daemon root 0 Mar 22 09:53 /var/tmp/.oracle/s#10534.2
4259865 0 srwxrwxrwx 1 daemon root 0 Mar 22 09:53 /var/tmp/.oracle/sREGISTER
(2)
When the Listener process starts, it tries to create the following socket files:
/var/tmp/.oracle/s#<pid>.1
/var/tmp/.oracle/s#<pid>.2
/var/tmp/.oracle/sREGISTER
where <pid> is the ID of the operating system process for the Listener.
As the file /var/tmp/.oracle/sREGISTER already exists and belongs to a UNIX user other than oracle, the Listener process (running with privileges of user oracle) cannot create a new socket file with that name. Therefore the Listener fails to start.
Resolution
(1)
Delete all socket files from directory /var/tmp/.oracle as UNIX user root.
(2)
Start the Listener by executing the command "lsnrctl start" as UNIX user oracle.
Delete all socket files from directory /var/tmp/.oracle as UNIX user root.
(2)
Start the Listener by executing the command "lsnrctl start" as UNIX user oracle.
No comments:
Post a Comment