The IO Error: Got minus one from a read call error is caused by the SQLNET.ora file on the database server being configured to only allow connections from certain computers on the network (as identified by their IP addresses).
Attempting to connect to a database via SQL Developer throws the error when testing or attempting to use the connection:
If the TCP.VALIDNODE_CHECKING parameter is enabled In the SQNET.ora file then the IP address of each computer allowed to connect to databases via the listener configured using that SQLNET.ora file will need to be added to the TCP.INVITED_NODES list.
Here is an example SQLNET.ora file with VALIDNODE_CHECKING enabled and one computer (with the IP address 192.168.1.101) granted access:
# This file is actually generated by netca. But if customers choose to # install "Software Only", this file wont exist and without the native # authentication, they will not be able to connect to the database on NT. SQLNET.AUTHENTICATION_SERVICES = (NTS) tcp.validnode_checking = YES tcp.invited_nodes = (192.168.1.101)
There is an opposite parameter to TCP.INVITED_NODES; TCP.EXCLUDED_NODES will forbid access to those IP addresses configured in its list.
With the appropriate settings in place, SQL Developer should be able to connect as planned:
The SQLNET.ora settings effect other systems as well as SQL Developer – tools like Oracle Enterprise Manager can also throw the Got minus one from a read call error if the OEM server is not in the list of invited nodes!