【问题标题】:Oracle SqlError: Protocol Violation / OALL8 is in an inconsistant stateOracle Sql 错误:协议冲突/OALL8 处于不一致状态
【发布时间】:2012-03-17 05:54:48
【问题描述】:

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

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

最近唯一改变的是我安装了 ODAC,以便我可以使用 odp.net 替换 .NET 中的 System.Data.OracleClient。它是 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 Express Edition Release 11.2.0.2.0 - 生产,在 Windows Server 2003,x64 上运行

  • ODAC:11.2.0.3.0

SqlDeveloper 是在我安装 ODAC 之前安装的,但不知何故 SqlDeveloper 似乎正在通过 ODAC 作为客户端,尽管 PATH 环境变量中没有引用 ODAC。

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

【问题讨论】:

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


    【解决方案1】:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多