One Star

java.sql.SQLRecoverableException:No more data to read from socket

HI , EVERY ONE:
      I got a problem I can't fix it. Maybe you can help me.
      The situation is like this:
      I got the .sh  document? which connect to Oracle and run a procedure, 
      then I invoked it.  Sometimes,  just sometimes, it will failure, the error like this:
                java.sql.SQLRecoverableException:No more data to read from socket


      my oracle on another machine,  version:  11.2.0.1.0
      my jdbc6.jar:    Specification-Version: Oracle JDBC Driver version - "11.1.0.6.0-Production"
     
      what's the problem?
6 REPLIES
Seventeen Stars

Re: java.sql.SQLRecoverableException:No more data to read from socket

This is a network problem. The network socket expects data to read an got nothing. It has nothing to do with your job or the database.
One Star

Re: java.sql.SQLRecoverableException:No more data to read from socket

This is a network problem. The network socket expects data to read an got nothing. It has nothing to do with your job or the database.

I ping the database IP for a long time, it's fine.
I'm confused
Seventeen Stars

Re: java.sql.SQLRecoverableException:No more data to read from socket

You have to check not only the IP address, also the port must be checked. You can do this with a telnet and check if telnet can connect.
It will not be able to communicate in any way but if the connect works, than you can be sure the network is open.
Ping does not check any open ports. The next problem is, it looks like you can connect to the server with the default port but the database driver uses often after the connect different ports for the peer-to-peer communication. Check if you firewall does not disturb such routes.
If you look at the exception - it is quite clear it is a network problem.
Did you checked the connection with some other tools like JDeveloper?
One Star

Re: java.sql.SQLRecoverableException:No more data to read from socket

You have to check not only the IP address, also the port must be checked. You can do this with a telnet and check if telnet can connect.
It will not be able to communicate in any way but if the connect works, than you can be sure the network is open.
Ping does not check any open ports. The next problem is, it looks like you can connect to the server with the default port but the database driver uses often after the connect different ports for the peer-to-peer communication. Check if you firewall does not disturb such routes.
If you look at the exception - it is quite clear it is a network problem.
Did you checked the connection with some other tools like JDeveloper?

yeah, you are so right. 
our DBA said there is a network problem, so they add 2 parameters in the TNS, like below:
DEV =
  (DESCRIPTION =
  (SDU=2048)
  (TDU=2048)
    (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.4.95)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = dev)
    )
  ) 
the parameter SDU and TDU.
So, we need to add these two parameters in the Talend Db connection.
 we added like this, is that correct?(behind "extra parameters")
 

thanks so grateful!
Seventeen Stars

Re: java.sql.SQLRecoverableException:No more data to read from socket

No I that is not correct (I guess because I do not have any clue from Chinese language) - I guess you mean additional JDBC parameters?
In this case you should use the connection type Oracle custom and here you can use the TNS string like yours (all in one line).
I am not totally sure about the TNS string. I guess the "DEV = " is not necessary but you should check.
One Star

Re: java.sql.SQLRecoverableException:No more data to read from socket

No I that is not correct (I guess because I do not have any clue from Chinese language) - I guess you mean additional JDBC parameters?
In this case you should use the connection type Oracle custom and here you can use the TNS string like yours (all in one line).
I am not totally sure about the TNS string. I guess the "DEV = " is not necessary but you should check.

Well, thank you for your profession, and thank you for your patience! I really want to give you a hug!