我正在运行批处理应用程序,该应用程序处理大量数据文件并将数据放入Oracle 11g数据库。我使用的是Java 1.6.20,ojdbc6和ucp11.2。间歇性地,我得到ORA-01010无效操作SQLExceptions。当我查看此错误的含义以及要采取的操作时:
ORA-01010:无效的OCI操作
原因:
以下之一:1)您尝试了无效的OCI操作。 2) 您正在使用与7.1版链接的Oracle客户端应用程序(或 更高)库,设置环境变量ORA_ENCRYPT_LOGIN 为TRUE,您试图连接到7.0(或更低版本) Oracle Server。 3)您已连接到7.1(或更高版本) Oracle Server,初始化参数DBLINK_ENCRYPT_LOGIN是 设置为TRUE,并尝试使用指向a的数据库链接 7.0版(或更低版本)Oracle Server。 4)你连接到了 版本9.0.2(或更高版本)Oracle Server和您尝试使用a 指向版本9.0.1(或更低版本)Oracle Server的数据库链接 分布式自治交易。
行动:
由于上述原因:1)不要使用无效的OCI操作。 2)如果 您不希望在分布式中使用加密的连接密码 数据库,将ORA_ENCRYPT_LOGIN设置为FALSE。如果您希望使用加密 连接密码,您必须将所有Oracle服务器升级到版本7.1 (或更高)。 3)如果您不希望使用加密数据库链接 您的分布式数据库,将DBLINK_ENCRYPT_LOGIN设置为FALSE。如果你 希望使用加密的数据库链接,必须升级所有Oracle 服务器到7.1(或更高版本)。 4)不要尝试分发 版本9.0.1(或更低版本)Oracle Server上的自治事务。
这对我没有意义,因为我使用的是更新的JDBC驱动程序和最新版本的Oracle。如果问题是登录,为什么它会工作在90-95%而不是其他5-10%?我确保所有的Oracle服务器都是11g。我还提出了ORA-01010信息,以便任何试图回答这个问题的人可以避免这样做,认为他们找到了答案。除非你能解释看似与我的问题没什么关系的看似神秘的信息,否则不要打扰。
根据以下评论进行更新:
这是确切的错误:
Exception in thread "main" org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [select sum(FREQ) from CONTRIBUTOR_DETL where EXTRACT(MONTH FROM DOS) BETWEEN 6 and 8 and CONTRIBUTOR_HDR_ID = ? and ERROR_FOUND = 'N']; SQL state [72000]; error code [1010]; ORA-01010: invalid OCI operation
; nested exception is java.sql.SQLException: ORA-01010: invalid OCI operation
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:602)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:665)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:673)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:728)
at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:744)
at org.springframework.jdbc.core.JdbcTemplate.queryForInt(JdbcTemplate.java:775)
at org.ddpa.dsc.dao.impl.DscSummaryDaoImpl.getAcceptedOccurrencesBySummerQuarter(DscSummaryDaoImpl.java:176)
at org.ddpa.dsc.reports.DscSummaryReport.getSummaryReport(DscSummaryReport.java:132)
at org.ddpa.dsc.pre.DscPreprocessor.preprocessFile(DscPreprocessor.java:195)
at org.ddpa.dsc.Main.main(Main.java:33)
Caused by: java.sql.SQLException: ORA-01010: invalid OCI operation
at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:70)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:791)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:866)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3431)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1491)
at sun.reflect.GeneratedMethodAccessor15.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at oracle.ucp.jdbc.proxy.PreparedStatementProxyFactory.invoke(PreparedStatementProxyFactory.java:110)
at $Proxy3.executeQuery(Unknown Source)
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:643)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:586)
答案 0 :(得分:0)
当我尝试访问/编写一些clob列时,我曾经看到过这个错误。我相信它是甲骨文本身的一个错误,它不会一直发生。升级到12后,这个问题就消失了。
但至少你应该能够捕获异常并找出导致问题的sql语句。