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