[英]Oracle: OALL8 is in an inconsistent state
作為升級 JRun 的一部分,我們將從 1.4 JVM 遷移到 1.6 JVM。 現在我得到一個非常奇怪的 oracle 數據庫錯誤:“OALL8 處於不一致的狀態”。 我已經確定了插入根本不使用綁定變量的查詢的問題 - 所有內聯參數。 如果我在沒有任何綁定變量的情況下運行查詢,則會收到上述錯誤。 一旦我用綁定變量替換了其中一個硬編碼值 - 一切都會正常工作。
另一個奇怪的地方是,在執行查詢之后,它實際上是提交給數據庫的。 我可以從另一個 session 連接並查看插入的行。 我已經嘗試將查詢包裝在事務中,並且它似乎成功了,因為沒有顯式事務的查詢的行為沒有改變。
以下是相關細節:
Java 版本:1.6.0_12-b04
虛擬機版本:11.2-b01(HotSpot 服務器)
Oracle 服務器:10.2.0.4
Oracle 客戶端:11.1.0.7.0 到 ojdbc6.jar
更新:我正在使用 cfqueryparam - 它們在 oracle 世界中被稱為綁定變量。 雖然這確實解決了眼前的問題,但我們有一個相當大的遺留代碼庫,作為從 CF7 升級到 CF8 的一部分,我們實際上無法通過所有更新查詢的 go
即使我已經確定了一種失敗的特定情況(並將其封裝在 mxunit 測試中)——這並不意味着沒有其他可能存在問題的領域。 我真的很想有一個解決方案來消除 OALL8 錯誤,而不是圍繞它進行編碼。
更新 2:在與我們的 DBA 核實后,他將一個名為 CURSOR_SHARING 的參數設置為 SIMILAR。 Oracle 默認為精確。 正在發生的事情是,當 ColdFusion 將查詢交給執行時,Oracle 正在將所有文字值轉換為綁定變量,這似乎使 ColdFusion 感到困惑。 將設置轉回 EXACT 可以讓文字查詢正常工作。
更新 3: Oracle 終於向我們發布了 JDBC 的帶外補丁。 它被識別為 JDBC 錯誤。 最新的驅動程序在最終更新時應該包含它。 如果您有支持,您還可以通過他們的 TAR 系統請求補丁。
我發現這個http://asanga-pradeep.blogspot.com/2008/06/oall8-is-in-inconsistent-state-with.html
Oracle 補丁4390875
如果您的應用程序在 weblogic 中運行,則應將 ojdbc.jar 復制到安裝目錄“weblogic81\server\lib”,覆蓋同名文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.