Home » Developer & Programmer » JDeveloper, Java & XML » java.sql.SQLException: Io exception: Undefined Error (JDBC with RAC Oracle Cluster)
java.sql.SQLException: Io exception: Undefined Error [message #289096] Wed, 19 December 2007 12:29
rlear
Messages: 1
Registered: December 2007
Location: Toronto, Canada
Junior Member
Hi all.

This post is to document an otherwise frustrating problem when connecting to a RAC system when you have a broken URL for the JDBC connection.

I have spent some hours trying to track down what the problem was, and, having found it, and finding no other references to it in Google, I decided it should be published somewhere that Google indexes ....

Using the Oracle Net connection descriptor style for a JDBC URL you have a URL of the form:

jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on)
(FAIL_OVER=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=host01-vip)(PORT=1521))
(ADDRESS=(PROTOCOL=TCP)(HOST=host02-vip)(PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=DEVRAC)) )

We are just busy building our first RAC system, and, to test how our existing code interacts with the system I typed in the following URL using just one of the RAC Nodes:

jdbc:oracle:thin:@(DESCRIPTION= (LOAD_BALANCE=on)
(FAIL_OVER=on)
(ADDRESS=(PROTOCOL=TCP)(HOST=host01-vip)(PORT=1521))
(CONNECTDATA=(SERVICE_NAME=DEVRAC)) )

Note how I mis-typed the URL and used CONNECTDATA instead of CONNECT_DATA You can mis-spell any other parameter, but if you get CONNECT_DATA wrong then you get this 'Undefined Error'

Using the above *broken* URL you get the not-so-useful exception trace (note: if you have more than one Address configured you get a different exception):

Exception in thread "main" java.sql.SQLException: Io exception: Undefined Error
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:190)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:363)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:466)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
        at java.sql.DriverManager.getConnection(DriverManager.java:562)
        at java.sql.DriverManager.getConnection(DriverManager.java:186)
        at rac.main(rac.java:15)


Hopefully this will save someone a few hours in the future as they try to resolve a frustrating exception. For the record, here's the exception trace you get with two addresses configured, but with a mis-typed CONNECTIONDATA

Exception in thread "main" java.sql.SQLException: Io exception: End of TNS data channel
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:190)
        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:363)
        at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:401)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:466)
        at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:165)
        at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:35)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:839)
        at java.sql.DriverManager.getConnection(DriverManager.java:562)
        at java.sql.DriverManager.getConnection(DriverManager.java:186)
        at rac.main(rac.java:15)


Rolf
Previous Topic: ClassNotFound exception (split topic)
Next Topic: extract data
Goto Forum:
  


Current Time: Tue Apr 16 04:06:55 CDT 2024