我们正在迭代中测试我们的sql:SELECT a b from c left join d on ... where e = ?
。有很多测试,但只有一个(仍然相同)有时会失败 ora: 03115
。数据仍然相同。
error code [3115]; ORA-03115: unsupported network datatype or representation
我正在使用ojdbc6
和oracle 11:
Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production
PL/SQL Release 11.1.0.6.0 - Production
"CORE 11.1.0.6.0 Production"
TNS for Linux: Version 11.1.0.6.0 - Production
NLSRTL Version 11.1.0.6.0 - Production
我读到了这个错误,但没有解释有时它失败了,有时不是在条件相同时。错误只出现几次(90%OK 10%失败)。知道为什么会这样吗?
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [];
SQL state [63000]; error code [3115]; ORA-03115: unsupported network datatype or representation
; nested exception is java.sql.SQLException: ORA-03115: unsupported network datatype or representation
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:688)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:680)
PS:这与将其标记为重复的问题没有任何共同之处。在我的选项中,此问题有时并不总是如上例所示。我正在使用spring jdbc:
PreparedStatementCreator psc = new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement(query);
if (timeout != null)
ps.setQueryTimeout(timeout);
if (fetchSize != null)
ps.setFetchSize(fetchSize);
return ps;
}
};
PreparedStatementSetter pss = new PreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps) throws SQLException {
setParameters(ps, limitType, 1);
}
};
ResultSetExtractor<List> rse = new ResultSetExtractor<List>() {
@Override
public List extractData(ResultSet rs) throws SQLException, DataAccessException {
if (fetchSize != null)
rs.setFetchSize(fetchSize);
return getResults(rs);
}
};
List list = jdbcTemplate.query(psc, pss, rse);
if (logger.isDebugEnabled()) {
logger.debug("list, number of returned rows=" + ((list != null) ? list.size() : "null"));
}
return list;