Problem
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 08-AUG-2018 20:36:19
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Starting /oracle/product/112/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /oracle/product/112/network/admin/listener.ora
Log messages written to /oracle/diag/tnslsnr/<server_name>/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(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 08-AUG-2018 20:36:19
Copyright (c) 1991, 2011, Oracle. All rights reserved.
Starting /oracle/product/112/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 11.2.0.3.0 - Production
System parameter file is /oracle/product/112/network/admin/listener.ora
Log messages written to /oracle/diag/tnslsnr/<server_name>/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myhost)(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 Aug 22 09:53 /var/tmp/.oracle/s#10534.1
4259874 0 srwxrwxrwx 1 daemon root 0 Aug 22 09:53 /var/tmp/.oracle/s#10534.2
4259865 0 srwxrwxrwx 1 daemon root 0 Aug 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.
Example:
$ ls -l /var/tmp/.oracle
4259873 0 srwxrwxrwx 1 daemon root 0 Aug 22 09:53 /var/tmp/.oracle/s#10534.1
4259874 0 srwxrwxrwx 1 daemon root 0 Aug 22 09:53 /var/tmp/.oracle/s#10534.2
4259865 0 srwxrwxrwx 1 daemon root 0 Aug 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.
(2) Start the Listener by executing the command "lsnrctl start" as UNIX user oracle.
No comments:
Post a Comment