使用较新版本的Oracle DB(12.2.0.1),我们开始收到ORA-00932,因为该代码可与较旧的DB服务器配合使用。
此外,驱动程序还会报告异常的奇怪细节:
ORA-00932:数据类型不一致:预期的SYS.AQ $ _JMS_TEXT_MESSAGE
得到了SYS.AQ $ _JMS_TEXT_MESSAGE
您可以看到期望的类型名称是相同的。
Caused by: java.sql.SQLException: ORA-00604: error occurred at recursive SQL level 1
ORA-00932: inconsistent datatypes: expected SYS.AQ$_JMS_TEXT_MESSAGE got SYS.AQ$_JMS_TEXT_MESSAGE
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:389)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:382)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:600)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4Caqe.doOAQEQ(T4Caqe.java:355)
at oracle.jdbc.driver.T4CConnection.doEnqueue(T4CConnection.java:3938)
at oracle.jdbc.driver.PhysicalConnection.enqueue(PhysicalConnection.java:10076)
at oracle.jms.AQjmsProducer.jdbcEnqueue(AQjmsProducer.java:1096)
... 13 more
使用以下AQ驱动程序库从独立的Java应用程序中引发了问题:
aqapi.jar;javax.jms_1.1.4.jar;jta-1.1.jar
使用的ojdbc驱动程序版本:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.5
Created-By: 1.5.0_30-b03 (Sun Microsystems Inc.)
Implementation-Vendor: Oracle Corporation
Implementation-Title: JDBC
Implementation-Version: 11.2.0.3.0
Repository-Id: JAVAVM_11.2.0.3.0_LINUX_110823
Specification-Vendor: Sun Microsystems Inc.
Specification-Title: JDBC
Specification-Version: 4.0
Main-Class: oracle.jdbc.OracleDriver
sealed: true
最佳答案
当我们开始使用与Oracle DB服务器相同的jdbc驱动程序版本时:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Implementation-Title: JDBC
Implementation-Version: 12.2.0.1.0
sealed: true
Repository-Id: JAVAVM_12.2.0.1.0_LINUX.X64_161213
Specification-Vendor: Sun Microsystems Inc.
Specification-Title: JDBC
Created-By: 25.91-b14 (Oracle Corporation)
Specification-Version: 4.0
Implementation-Vendor: Oracle Corporation
Main-Class: oracle.jdbc.OracleDriver
AQ JMS驱动程序开始运行良好。我找不到任何Oracle文档说明,即11.2 jdbc驱动程序与12.2 ORA DB服务器不兼容,甚至与AQ JMS实现(aqapi.jar)也不兼容。