Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.server -> Re: failover JDBC thin driver connection in 10.2 RAC

Re: failover JDBC thin driver connection in 10.2 RAC

From: <kuassi.mensah_at_gmail.com>
Date: 27 Aug 2006 21:55:56 -0700
Message-ID: <1156740956.289447.61690@h48g2000cwc.googlegroups.com>


Hi,

As i wrote in my book (Chapter 9, on Best practices), the "No more data to read from socket" message is usually thrown when the JDBC-Thin driver times out while waiting to get more bytes from the server (and the server is finished!). This is usually a result of the crash of a server process; see the server logs for more details.

Kuassi - blog http://db360.blogspot.com/

cbarak wrote:
> Thanks, Joe. I got past the error message per your suggestion. However,
> I'm still not able to transparently failover my session using JDBC thin
> driver/FCF. I may have misunderstood what was being conveyed in this
> thread. Is it possible to transparently
> failover a JDBC thin client connection using FCF?
>
> I did a test where my java program connected to the database and
> queried on a data dictionary view. When I "shutdown abort" on the
> instance, the session failed with the following error messages. The
> java program ran on one of the RAC nodes. I've configured connection
> cache, FCF and ONS. I'm not sure what else that I've missed.
>
> Any suggestions?
>
> thanks.
>
> Exception in thread "main" java.sql.SQLException: No more data to read
> from socket
> at
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
> at
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
> at
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
> at
> oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1118)
> at
> oracle.jdbc.driver.T4CMAREngine.unmarshalSB1(T4CMAREngine.java:1070)
> at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:478)
> at
> oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
> at
> oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
> at
> oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
> at
> oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
> at
> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
> at
> oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1272)
> at test4.main(test4.java:40)
>
>
>
>
>
>
> joeNOSPAM_at_BEA.com wrote:
> > Download Oracle's ons.jar and get it into your classpath.
> >
> > Joe Weinstein at BEA Systems
> >
> > cbarak wrote:
> > > thanks everyone for their inputs.
> > >
> > > I've created an oracle data source in my java program and enabled
> > > caching and FCF -
> > > ods.setConnectionCachingEnabled(True);
> > > ods.setFastConnectionFailoverEnabled(True);
> > >
> > > however when I tried executing the program, I kept gettting
> > > NoClassDefFoundError: oracle/ons/ONSException. Are there any other
> > > classes I have to include other than the following -
> > >
> > > import java.sql.*;
> > > import oracle.jdbc.driver.*;
> > > import oracle.jdbc.pool.*;
> > >
> > >
> > > Exception in thread "main" java.lang.NoClassDefFoundError:
> > > oracle/ons/ONSException
> > > at
> > > oracle.jdbc.pool.OracleConnectionCacheManager.createCache(OracleConnectionCacheManager.java:261)
> > > at
> > > oracle.jdbc.pool.OracleConnectionCacheManager.createCache(OracleConnectionCacheManager.java:167)
> > > at
> > > oracle.jdbc.pool.OracleDataSource.cacheInitialize(OracleDataSource.java:427)
> > > at
> > > oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:402)
> > > at
> > > oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:189)
> > > at
> > > oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java:165)
> > > at test1.main(test1.java:20)
> > >
> > >
> > > thanks.
> > >
> > >
> > > kuassi.mensah_at_gmail.com wrote:
> > > > I confirm, FCF is driver-independent while TAF is an OCI feature and
> > > > can only be used with JDBC-OCI. FCF requires the application or the
> > > > container to re-submit a getConnection() request upon RA node failure,
> > > > which is a good JDBC coding practice -- while this happens
> > > > transparently with TAF however, TAF is not integrated with the
> > > > connection pool and certain features do not work as people would think.
> > > > I cover in greater details FCF and compare with TAF in my book
> > > >
> > > > Kuassi - blog http://db360.blogspot.com/
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > DA Morgan wrote:
> > > > > cbarak wrote:
> > > > > > I have problem failing over JDBC (thin driver) connection using TAF:
> > > > > >
> > > > > > Connection conn = DriverManager.getConnection
> > > > > > ("jdbc:oracle:thin:@(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST =
> > > > > > dhp1-vip)(PORT = 1521)) (ADDRESS = (PROTOCOL = TCP)(HOST =
> > > > > > dhp2-vip)(PORT =1521)) (ADDRESS = (PROTOCOL = TCP)(HOST =
> > > > > > dhp3-vip)(PORT = 1521)) (LOAD_BALANCE = yes) (CONNECT_DATA = (SERVER =
> > > > > > DEDICATED) (SERVICE_NAME = ypapps) (FAILOVER_MODE = (TYPE = SELECT)
> > > > > > (METHOD = BASIC) (RETRIES = 180) (DELAY = 5))))","scott","tiger");
> > > > > >
> > > > > >
> > > > > >>From the many threads I have read, some folks were able to use TAF for
> > > > > > JDBC thin client connections in 10gr2. Are there any specific
> > > > > > configuration I have to set up for JDBC thin client to make failover
> > > > > > transparent?
> > > > > >
> > > > > > I have also read from Oracle manuals that Fast Connection Failover is
> > > > > > the preferred method for jdbc connection. How do I turn on FCF - ie
> > > > > > where do I set FastConnectionFailoverEnabled=true? For now, I'm just
> > > > > > running a simple java program on one of the RAC nodes that connects to
> > > > > > the database via jdbc thin driver and does a query on schema objects.
> > > > > > Do I specify FastConnectionFailoverEnabled=true in some Oracle
> > > > > > configuration file or in my .java program?
> > > > > >
> > > > > > Thanks.
> > > > >
> > > > > With 10gR2 I would recommend use FCF and not use TAF as TAF seems to be
> > > > > on its way to obsolesence.
> > > > >
> > > > > http://download-west.oracle.com/docs/cd/B19306_01/rac.102/b14197/hafeats.htm#sthref455
> > > > >
> > > > > Should get you where you want to go.
> > > > > --
> > > > > Daniel A. Morgan
> > > > > University of Washington
> > > > > damorgan_at_x.washington.edu
> > > > > (replace x with u to respond)
> > > > > Puget Sound Oracle Users Group
> > > > > www.psoug.org
Received on Sun Aug 27 2006 - 23:55:56 CDT

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US