Saturday, August 10, 2019

Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) TNS-12555: TNS:permission denied TNS-12560: TNS:protocol adapter error TNS-00525: Insufficient privilege for operation Linux Error: 1: Operation not permitted

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...
---------------------------------

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.

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.

No comments:

Post a Comment