Thursday 9 August 2018

Oracle Listener fails to start, error messages TNS-12555, TNS-12560, TNS-00525

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

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.

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