Oracle OCI无效操作ORA-01010

Oracle OCI无效操作ORA-01010,oracle,jdbc,oracle-call-interface,ucp,Oracle,Jdbc,Oracle Call Interface,Ucp,我正在运行一个批处理应用程序,它处理大量数据文件,并将数据放入Oracle 11g数据库。我使用的是Java1.6.20、ojdbc6和ucp11.2。我间歇性地收到ORA-01010无效操作SQLExceptions。当我查找此错误的含义以及应采取的措施时: ORA-01010:OCI操作无效 原因: 以下操作之一:1)您尝试了无效的OCI操作。2) 您正在使用与7.1版(或更高版本)链接的Oracle客户端应用程序 更高)库中,设置了环境变量ORA_ENCRYPT_LOGIN 为TRUE,则

我正在运行一个批处理应用程序,它处理大量数据文件,并将数据放入Oracle 11g数据库。我使用的是Java1.6.20、ojdbc6和ucp11.2。我间歇性地收到ORA-01010无效操作SQLExceptions。当我查找此错误的含义以及应采取的措施时:

ORA-01010:OCI操作无效

原因:

以下操作之一:1)您尝试了无效的OCI操作。2) 您正在使用与7.1版(或更高版本)链接的Oracle客户端应用程序 更高)库中,设置了环境变量ORA_ENCRYPT_LOGIN 为TRUE,则您尝试连接到7.0版(或更低版本) Oracle服务器。3) 您已连接到7.1版(或更高版本) Oracle Server,初始化参数DBLINK\u ENCRYPT\u LOGIN为 设置为TRUE时,您尝试使用指向 7.0版(或更低版本)Oracle Server。4) 您已连接到一个 版本9.0.2(或更高版本)的Oracle Server,并且您尝试使用 指向的Oracle Server 9.0.1(或更低版本)的数据库链接 分布式自治事务

行动:

对于上述原因:1)不要使用无效的OCI操作。2) 如果 您不希望在分布式系统中使用加密的连接密码 数据库,将ORA_ENCRYPT_LOGIN设置为FALSE。如果您希望使用加密 连接密码时,必须将所有Oracle服务器升级到7.1版 (或更高)。3) 如果不希望在中使用加密的数据库链接 在分布式数据库中,将DBLINK\u ENCRYPT\u 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)

当我尝试访问/写入某个clob列时,我经常看到这个错误。我相信这是甲骨文本身的一个缺陷,它不会一直发生。升级到12级后,这个问题就消失了


但至少您应该能够捕获异常并确定是哪个sql语句导致了问题。

这是您得到的唯一错误吗?我还希望看到ora-3137,这违反了协议。你能发布完整的错误文本吗?网络数据包可能在线路上损坏。有时,当数据包太短时会引发此错误。这是您得到的唯一错误吗?我还希望看到ora-3137,这违反了协议。你能发布完整的错误文本吗?网络数据包可能在线路上损坏。有时,当数据包太短时会引发此错误。不幸的是,这就是我从堆栈跟踪中得到的所有信息。这是随机发生的,它似乎与它试图打印的报告的大小和两个环境的大小无关,我已经在其中测试了这段代码,这似乎是一个问题。