簡體   English   中英

Java JDBC Oracle 9i升級到10g問題

[英]Java JDBC Oracle 9i upgrade to 10g issues

我們剛剛從oracle 9i升級到10g,並且數據庫查詢與9i客戶端一起工作,但與10g無關。 查詢中的任何內容都沒有更改。 我收到以下錯誤:

java.sql.SQLException: ORA-01036: illegal variable name/number

不太確定發生了什么。 為什么它不再運行了。 這只是一條選擇語句,它聯接了大約3或4個表。 我確保使用setInt傳遞變量(這是我正在使用的數字)。 在比較要聯接的表時,我發現的唯一不同之處在於,在一個表上,我要聯接的列設置為一個表上的Number以及另一個表上的Number(12)。 這有什么不同嗎? 該查詢仍在TOAD和SQL Navigator中運行...

我想到了兩個想法:

  1. 確保您使用的是正確版本的jdbc驅動程序。 由於您已經說過查詢可以在TOAD等環境中使用,因此很可能是您遇到的問題。
  2. 確保您沒有在查詢中使用任何ORACLE關鍵字作為列別名等

同樣,從經驗來看,如果您的數據庫很大/很忙,在10g環境穩定之前,您還有一段公平的路要走。 我的建議:

  1. 盡可能多地了解統計信息
  2. 閱讀生存指南(網上有很多)
  3. 注意內置作業,這些作業會重新計算狀態。 上線12天后,我們就受到了重創,因為統計數據的更改破壞了關鍵查詢的性能。 我們的測試不允許進行12天的穩定性測試。
  4. 如果您還沒有意識到,請注意bind-variable-peeking

問題在於對准備好的語句的以下方法調用:

ps.setEscapeProcessing(false);

刪除它,現在可以正常工作了。 不要認為這與oracle 10g驅動程序兼容。 謝謝大家的幫助。

暫無
暫無

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

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