Monday, March 29, 2010

TNS-01169: The listener has not recognized the password

Problem Description
oracle:/databridge/db DBGEP> $ lsnrctl status LISTENER

LSNRCTL for HPUX: Version 9.2.0.8.0 - Production on 28-MAR-2010 21:19:33

Copyright (c) 1991, 2006, Oracle Corporation. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ravel.gov)(PORT=1521)))
TNS-01169: The listener has not recognized the password

Cause of the Problem
The TNS-01169 error occurred because security feature is enabled for listener i.e password is set in listener.ora file but lsnrctl command is issued without proper authentication.

Solution of the Problem
After you enable listener password in Oracle 9i, you will now require a password whenever you wish to stop the listener or any other listener actions. However in Oracle database 10g, if you are not logged into the operating system with a privileged account i.e OS user is a member of dba group, you will have to enter a password while doing any operation to listener.

As we see from the message our listener version is 9.2.0.8.0 so follow the following steps to solve the problem.

A) If you remember listener password:
Step 01: Invoke lsnrctl command.
$lsnrctl

Step 02: Set the current_listener to the appropriate listener to which you want to do operation.
LSNRCTL> set current_listener {listener_name_here}

Note that you have to issue "set current_listener {listener_name_here}" if your listener name is not default name that is LISTENER.

Step03: Set password to the password that you previously set for listener.
LSNRCTL> set password {password_here}
or simply you can do it interactively as,

LSNRCTL> set password
Password: {enter_your_password_here}

Step 04: Issue your appropriate command.
LSNRCTL> status
or,
LSNRCTL> stop

B) If you forget listener password:
If password is set in plain text within listener.ora file
If you forget listener password then look for listener.ora and see if password is set in plain text. If it is in plain text then you can retrieve it easily and use that in "set password" command and then do operation as you wanted.

If password is encrypted within listener.ora file
Step 01:
If password is set in encrypted format, check the listener process by issuing,
$ps -ef |grep tns
and note down the process id.

Step 02:
Kill the listener process by,
$kill -9 {process_id}

Step 03:
Remove the line PASSWORDS_{listener_name} from the listener.ora file.

Step 04:
Start the listener
$lsnrctl start {listener_name}
and set the password if you want to set the password again. In order to set the password have a look at, How to set listener password

Related Documents
ORA-12518: TNS:listener could not hand off client connection
The listener supports no services
lsnrctl start fails with TNS-12541, TNS-12560,TNS-00511, Linux Error: 111:
Listener Hangs, Child listener process remains persistence
EM Daemon is not running
ORA-12541: TNS:no listener
ORA-12514: TNS:listener does not currently know of service requested in connect descriptor
Login to Dbconsole, Authentication failed!null Returned
How to Enable Listener Logging and Tracing

1 comment:

  1. Hi..

    Very nice and so helpful for me.
    I faced this problem and now already resolved. Thanks to Allah SWT that brought me to your blog.

    Thanks a lot
    Bhoed

    ReplyDelete