
我這里有個sql,里面有個條件包含一個方法,sql只要執行,連接就會斷開。
如果把帶函式的條件洗掉了,可以正常執行。
這是一個老系統,這種帶函式的寫法很多,不能替換。
這個sql再oracle10g里面正常執行,好像12c也可以。
正式環境的資料庫是10g,所以對客戶也沒有影響,只不過公司測驗庫安裝的11g,所以有沒有辦法解決一下。

系統:window 64位
資料庫:32位
日志檔案地址:http://pan.baidu.com/s/1kU6Szor
uj5u.com熱心網友回復:
你單獨執行函式會例外中斷不select F('410000000') from dual
uj5u.com熱心網友回復:
這種執行正常
uj5u.com熱心網友回復:
大概執行這個陳述句要多久,看下服務器CPU和記憶體情況uj5u.com熱心網友回復:
BAFWY.T_GAD_ZXFZBJYYFWQYBAXX 這個表,看看是否有人在長時間改表結構,或者看看等待時間uj5u.com熱心網友回復:
執行sql時間不定,有時一秒就結束,有時要十幾秒。
cpu【0%-5%】

T_GAD_ZXFZBJYYFWQYBAXX 這個表現在沒有人動,現在只有我自己登錄這個賬號,我只有在用plsql測驗查詢陳述句。
uj5u.com熱心網友回復:
我的專案也遇到過該情況.資料庫11G,當時也查了很多資料.有人說是oracle bug.后面解決方法就是修改了函式中的一些陳述句.
有時候錯誤執行一次是不會出現的,執行久了才出現.
uj5u.com熱心網友回復:
剛才又發現一種情況,ROWNUM去掉或者帶方法的條件去掉,都可以執行成功,兩個不能共存。
執行失敗:
SELECT A.*, ROWNUM
FROM (SELECT T.ID
FROM T_GAD_ZXFZBJYYFWQYBAXX T
WHERE T.SJGSDWDM LIKE (F('410000000000') || '%')
ORDER BY T.LRSJ DESC) A
執行成功:
SELECT A.*
FROM (SELECT T.ID
FROM T_GAD_ZXFZBJYYFWQYBAXX T
WHERE T.SJGSDWDM LIKE (F('410000000000') || '%')
ORDER BY T.LRSJ DESC) A
執行成功:
SELECT A.*, ROWNUM
FROM (SELECT T.ID
FROM T_GAD_ZXFZBJYYFWQYBAXX T
ORDER BY T.LRSJ DESC) A
uj5u.com熱心網友回復:
可能是BUG,如果可以的話,重啟下資料庫試試。uj5u.com熱心網友回復:
資料庫重啟幾次了,都是這種情況。
uj5u.com熱心網友回復:
你把F('410000000000') 的查詢放在with as 里,看看這種還會報錯不uj5u.com熱心網友回復:
這樣寫,可以執行成功:
WITH M AS (SELECT F('410000000000') AS ORGCODE FROM DUAL)
SELECT A.*, ROWNUM
FROM (SELECT T.ID
FROM T_GAD_ZXFZBJYYFWQYBAXX T,M
WHERE T.SJGSDWDM LIKE (M.ORGCODE || '%')
ORDER BY T.LRSJ DESC) A
uj5u.com熱心網友回復:
搞不清了,可能存在BUG,只能先這樣了。或者日志檔案找哪個大神看下
uj5u.com熱心網友回復:
11.2.0.1有很多BUG的,建議升到11.2.0.4看看是否還有這個問題uj5u.com熱心網友回復:
11.2.0.1有很多BUG的,建議升到11.2.0.4看看是否還有這個問題
原來如此,抽空我升級一下試試。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/87737.html
標籤:開發
