Hi,
We have serious problems with the Oracle JDBC connection "crashes" when
the setIncludeSynonyms is true and getting metadata. When
setIncludeSynonyms is false it works fine. The real context is a bought
product that uses setIncludeSynonyms = true..
Using ojdbc14_g.jar (10.2.0.2.0) and my test application is:
package test;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.Enumeration;
import oracle.jdbc.OracleConnection;
public class OracleTest {
public static void main(String[] args) {
try {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
oracle.jdbc.driver.OracleLog.setTrace(true);
Enumeration enums = DriverManager.getDrivers();
while (enums.hasMoreElements()) {
System.out.println("Driver \"" +
enums.nextElement().getClass().getName() + "\" is loaded");
}
Connection conn =
DriverManager.getConnection("jdbc:oracle:thin:@ora.domain.net:1521:dbname",
"userid", "password");
System.out.println("Connection Class: " + conn.getClass().getName());
((OracleConnection)conn).setIncludeSynonyms(true);
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet r = dbmd.getColumns(null, "MYSCHEMA", "MY_TABLE", "%");
while (r.next()) {
System.out.println("[Column name: "+ r.getString(4)+ "] [Data type:
" + r.getString(5)+ "] [Data type name: " + r.getString(5)+"]");
}
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
This results in the following trace:
Driver "oracle.jdbc.driver.OracleDriver" is loaded
Driver "oracle.jdbc.driver.OracleDriver" is loaded
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection setAutoCommit
INFO: PhysicalConnection.setAutoCommit(autoCommit=true)
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection setAutoCommit
INFO: PhysicalConnection.setAutoCommit(autoCommit): return
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
setIncludeSynonyms
INFO: PhysicalConnection.setIncludeSynonyms(synonyms=true)
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection getMetaData
INFO: PhysicalConnection.getMetaData()
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getIncludeSynonyms
INFO: PhysicalConnection.getIncludeSynonyms() returned true
Connection Class: oracle.jdbc.driver.T4CConnection
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getRemarksReporting
INFO: PhysicalConnection.getRemarksReporting()
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getRemarksReporting
INFO: PhysicalConnection.getRemarksReporting()
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getIncludeSynonyms
INFO: PhysicalConnection.getIncludeSynonyms() returned true
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getIncludeSynonyms
INFO: PhysicalConnection.getIncludeSynonyms() returned true
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getRemarksReporting
INFO: PhysicalConnection.getRemarksReporting()
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getIncludeSynonyms
INFO: PhysicalConnection.getIncludeSynonyms() returned true
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getDefaultFixedString
INFO: PhysicalConnection.getDefaultFixedString() returning false
2007-feb-01 23:53:35 oracle.jdbc.driver.PhysicalConnection
getIncludeSynonyms
INFO: PhysicalConnection.getIncludeSynonyms() returned true
2007-feb-01 23:53:35 oracle.jdbc.driver.OraclePreparedStatement setString
INFO: OraclePreparedStatement.setString(paramIndex=1, x=MYSCHEMA)
2007-feb-01 23:53:35 oracle.jdbc.driver.OraclePreparedStatement setString
INFO: OraclePreparedStatement.setString(paramIndex=2, x=MYSCHEMA)
2007-feb-01 23:53:35 oracle.jdbc.driver.OraclePreparedStatement setString
INFO: OraclePreparedStatement.setString(paramIndex=3, x=MY_TABLE)
2007-feb-01 23:53:35 oracle.jdbc.driver.OraclePreparedStatement setString
INFO: OraclePreparedStatement.setString(paramIndex=4, x=MY_TABLE)
2007-feb-01 23:53:35 oracle.jdbc.driver.OraclePreparedStatement setString
INFO: OraclePreparedStatement.setString(paramIndex=5, x=%)
2007-feb-01 23:53:35 oracle.jdbc.driver.OraclePreparedStatement setString
INFO: OraclePreparedStatement.setString(paramIndex=6, x=MYSCHEMA)
2007-feb-01 23:53:36 oracle.jdbc.driver.T4CPreparedStatement
allocateTmpByteArray
ALLVARLIG: oracle.jdbc.driver.T4CPreparedStatement.allocateTmpByteArray
: Re-allocate byte array of size : 16000
2007-feb-01 23:53:39 oracle.jdbc.driver.PhysicalConnection close
INFO: PhysicalConnection.close()
Why does this happen?
How can I solve this?
I would be very happy if someone could help me solve this.
--
// 4 Integration
Received on Thu Feb 01 2007 - 17:06:00 CST