我在Oracle BBDD中遇到問題。一個查詢會消耗大量的SGA,直到BBDD開始給出錯誤ORA-04031並且我不得不重置它。SQL高可用內存
在AWR中,我可以看到「可共享內存中排序的SQL」中的查詢。查詢出現在此部分大量的時間,一個由每個不同的 「或的」,例如:
查詢1:
...My Query... WHERE (inc.ID =:"SYS_B_131"
OR inc.ID =:"SYS_B_132"
OR inc.ID =:"SYS_B_133"
OR inc.ID =:"SYS_B_134")
問題2:
...My Query... WHERE (inc.ID =:"SYS_B_131"
OR inc.ID =:"SYS_B_132"
OR inc.ID =:"SYS_B_133"
OR inc.ID =:"SYS_B_134"
OR inc.ID =:"SYS_B_135"
OR inc.ID =:"SYS_B_136"
OR inc.ID =:"SYS_B_137"
OR inc.ID =:"SYS_B_138")
等,等
我的問題是,具有4「或」項目的查詢具有3MB的內存消耗,具有500個「或」項目的查詢具有1GB的內存消耗,這是正常的嗎?
你使用cursor_sharing設置爲類似還是強制?最好的解決方案是強制應用程序使用綁定變量。 – ibre5041
是的,光標共享設置爲「FORCE」。 – Ildelian
不要使用CURSOR_SHARING = FORCE作爲永久修復。默認是CURSOR_SHARING = EXACT – pahariayogi