5

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

有谁知道这是为什么发生以及如何解决问题?我的不一致状态在哪里? Oracle的SqlDeveloper是它自己的独立客户端,还是依赖于ODAC或即时客户端(在PATH环境中引用)出现?

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

  • 即时客户端 - 11.2.0.2.0,在Win XP SP3,32位Oracle数据库运行:

  • Oracle数据库11g快捷版发布11.2.0.2.0 - 生产,运行在Windows Server 2003中,64

  • ODAC:安装11.2.0.3.0

的SQLDeveloper之前我安装ODAC,但不知何故的SQLDeveloper似乎通过ODAC可以去为客户端,尽管ODAC没有在被引用PATH环境变量。

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

回答

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