following on from a discussion last week re invited_nodes ..
I wanted to do some more testing of the finer points, and had been told by a collegue that if a listed invited node is not reachable, the listener will not come up. Sounded fishy, but worth checking out.
For the test I did a fresh install of 10.2.0.1 on OEL 5.4 on a physical (no VM) box. Made sure basic connections were working and was able to sqlplus connect from my desktop to the db. All of that was with everything straight out of the box. Then I started to test and things got fishy..
The following was captured by logging a putty session, then global changes on ip, server and domain names.
First we see the sqlnet.ora has invited-nodes coded in but not yet enabled.
[oracle@myserver admin]$ cat sqlnet.ora
# sqlnet.ora Network Configuration File: /ora00/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
TCP.INVITED_NODES=(**.**.***.102)
#TCP.VALIDNODE_CHECKING=yes
And, from the server, we ping my workstation, which is listed in the validnode
[oracle@myserver admin]$ ping **.**.***.102
PING **.**.***.102 (**.**.***.102) 56(84) bytes of data.
64 bytes from **.**.***.102: icmp_seq=1 ttl=128 time=0.332 ms
64 bytes from **.**.***.102: icmp_seq=2 ttl=128 time=0.272 ms
--- **.**.***.102 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.272/0.302/0.332/0.030 ms
Next I start the listener, and everything looks good.
[oracle@myserver admin]$ lsnrctl start
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-SEP-2010 13:52:19
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /ora00/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /ora00/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /ora00/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myserver.mydomain)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myserver.mydomain)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 10.2.0.1.0 - Production
Start Date 09-SEP-2010 13:52:19
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /ora00/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Listener Log File /ora00/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myserver.mydomain)(PORT=1521)))
The listener supports no services
The command completed successfully
I was able to sqlplus connect from my desktop.
So let's stop the listener and enable node checking
[oracle@myserver admin]$ lsnrctl stop
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-SEP-2010 13:52:28
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myserver.mydomain)(PORT=1521)))
The command completed successfully
[oracle@myserver admin]$ vi sqlnet.ora
<snip vi session>
[oracle@myserver admin]$ cat sqlnet.ora
# sqlnet.ora Network Configuration File: /ora00/app/oracle/product/10.2.0/db_1/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
TCP.INVITED_NODES=(**.**.***.102)
TCP.VALIDNODE_CHECKING=yes
So we see node checking enabled, so start the listener
[oracle@myserver admin]$ lsnrctl start
LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 09-SEP-2010 13:52:52
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Starting /ora00/app/oracle/product/10.2.0/db_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 10.2.0.1.0 - Production
System parameter file is /ora00/app/oracle/product/10.2.0/db_1/network/admin/listener.ora
Log messages written to /ora00/app/oracle/product/10.2.0/db_1/network/log/listener.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=myserver.mydomain)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=myserver.mydomain)(PORT=1521)))
TNS-12547: TNS:lost contact
TNS-12560: TNS:protocol adapter error
TNS-00517: Lost contact
Linux Error: 104: Connection reset by peer
Huh???
[oracle@myserver admin]$ ps -ef|grep LISTENER|grep -v grep
oracle 4867 1 0 13:52 ? 00:00:00 /ora00/app/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER -inherit
[oracle@myserver admin]$