Oracle Sql错误:协议违规/ OALL8处于不一致状态

时间:2012-02-27 18:45:41

标签: oracle oracle11g environment-variables oracle-sqldeveloper odac

我正在获得协议违规,而OALL8是一个尝试执行SELECT查询的异常状态异常,但仅限于我的某些表。我在我编写的测试应用程序中首先注意到这一点,它执行了SELECT * FROM SOMETABLE。它会通过几百条记录,然后锁定我。我尝试在Oracle的SQLDeveloper中运行相同的查询,并在某些表上获得Protocol Violation异常。最终,对于任何查询,它都会指示“OALL8处于不一致状态”。

有谁知道为什么会发生这种情况以及如何解决问题?我的不一致状态在哪里? Oracle的SqlDeveloper是自己的独立客户端,还是依赖于ODAC或Instant Client(在PATH envi var中引用)?

最近唯一改变的是我安装了ODAC,以便我可以使用odp.net替换.NET中的System.Data.OracleClient。 IT是ODAC 11.2.0.3.0,使用Oracle Developer Tools for Visual Studio,32位。我更新了我的PATH environmetn变量,指向我的独立即时客户端。

  • Instant Client - 11.2.0.2.0,在Win XP SP3,32位Oracle DB上运行:

  • Oracle Database 11g快捷版11.2.0.2.0版 - 生产,在Windows Server 2003,x64上运行

  • ODAC:11.2.0.3.0

在我安装ODAC之前安装了SqlDeveloper,但不管怎么说SqlDeveloper似乎是通过ODAC作为客户端,尽管在PATH环境变量中没有引用ODAC。

更新:当我最初安装ODAC时,我的所有查询都正常运行。然后他们在一天后停止运作,我无法解释原因。我试图卸载ODAC,它在查找要删除的.DLL时失败。然后我手动删除了我的ORACLE_HOME,并重新安装了ODAC,它现在正常工作。我不明白为什么会这样。

1 个答案:

答案 0 :(得分:0)

SQL Developer在可用时使用ORACLE_HOME及其驱动程序。您在此看到的问题是ORACLE_HOME与SQL Developer中捆绑的JDBC驱动程序版本不同。

'修复'这是为了确保oracle客户端是最新的w /您已安装的sqldev版本。找到这个的最简单方法是在连接运行show jdbc

show jdbc
-- Database Info --
Database Product Name: Oracle
Database Product Version: Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production
Database Major Version: 12
Database Minor Version: 1
-- Driver Info --
Driver Name: Oracle JDBC driver
Driver Version: 12.2.0.1.0
Driver Major Version: 12
Driver Minor Version: 2