簡體   English   中英

Oracle:OALL8 在不一致的 state 中

[英]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 系統請求補丁。

所以...使用綁定變量?

無論如何,您都應該使用它們(通過cfqueryparam )來確保安全,如果它解決了問題,那就更有理由這樣做了。


如果您對實際錯誤的含義感興趣,谷歌有很多結果,表明這JDBC 驅動程序的錯誤,甚至建議有補丁可用


但是我在您的帖子中沒有看到實際問題...?

如果您的應用程序在 weblogic 中運行,則應將 ojdbc.jar 復制到安裝目錄“weblogic81\server\lib”,覆蓋同名文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM