Friday, July 31, 2015

Oracle Troubleshoot: Listener - Linux Error: 99: Cannot assign requested address

VM at the OneCloud got migrated and was forced to change the VM/Vapp name, so, it broke the listener.

A couple items that you should check and making sure IP is pingable, correct and assigned to this specific VM.



[oracle@oracle12c ~]$ cat /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
# listener.ora Network Configuration File: /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = Oracle12_normal)(PORT = 1521))
    )
  )

[oracle@oracle12c ~]$


[oracle@oracle12c ~]$ vi /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1               liftoff.vm liftoff localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
#192.168.254.100    Oracle12_normal     # NIC <eth0>
10.127.128.49   Oracle12_normal     # NIC <eth0>
~


LSNRCTL> start
Starting /u01/app/oracle/product/12.1.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.1.0.1.0 - Production
System parameter file is /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Error listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=Oracle12_normal)(PORT=1521)))
TNS-12545: Connect failed because target host or object does not exist
 TNS-12560: TNS:protocol adapter error
  TNS-00515: Connect failed because target host or object does not exist
   Linux Error: 99: Cannot assign requested address

Listener failed to start. See the error message(s) above...

LSNRCTL> quit
[oracle@oracle12c ~]$ vi /u01/app/oracle/diag/tnslsnr/oracle12c/listener/alert/log.xml

[oracle@oracle12c ~]$ ping oracle12c
ping: unknown host oracle12c


[oracle@oracle12c ~]$ uname -a
Linux oracle12c 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux

Here is the issue ... the listener still grabbing the hostname parameter from /proc/sys/kernel/hostname

[oracle@oracle12c ~]$ hostname
oracle12c
[oracle@oracle12c ~]$ cat  /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=oracle12c
PEERDNS=yes


[oracle@oracle12c ~]$ su -
Password:
[root@oracle12c ~]# vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=Oracle12_normal
PEERDNS=yes



[oracle@oracle12c ~]$ su -
Password:
[root@oracle12c ~]#  echo "Oracle12_normal" >  /proc/sys/kernel/hostname
[root@oracle12c ~]# exit
logout
[oracle@oracle12c ~]$ su -
Password:
[root@Oracle12_normal ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]


[oracle@oracle12c ~]$ lsnrctl

LSNRCTL for Linux: Version 12.1.0.1.0 - Production on 29-JUL-2015 15:05:09

Copyright (c) 1991, 2013, Oracle.  All rights reserved.

Welcome to LSNRCTL, type "help" for information.

LSNRCTL> start
Starting /u01/app/oracle/product/12.1.0/dbhome_1/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.1.0.1.0 - Production
System parameter file is /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/Oracle12_normal/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Oracle12_normal)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.1.0 - Production
Start Date                29-JUL-2015 15:05:33
Uptime                    0 days 0 hr. 0 min. 1 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/12.1.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/Oracle12_normal/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=Oracle12_normal)(PORT=1521)))
The listener supports no services
The command completed successfully
LSNRCTL>

There are times changing the VM name may not fixed everything. The hostname can be 'sticky' and remained as it is. Changing it manually may be necessarily.

In summary, change 2 places.  "/proc/sys/kernel/hostname" and "/etc/sysconfig/network" then bounce the network services.