新系統上線,10G 資料庫負載持續高

tolywang發表於2010-02-12
Oracle 10g  RAC,  3 NODES
Linux AS 5.3   64bit


最近新上線的程式或procedure中都會有類似下面SQL語句, 以前只有serial_number 欄位條件,現在加上了carton_no ,
WIP_D_SN_MASTER  表有300萬記錄, serial_number及carton_no都有index, 但是serial_number 建立index沒有任何
問題, 它的distinct 值很多, 但是carton_no 95% 的值是 'N/A' , 其他很少一部分才有值, procdure呼叫這個SQL, 傳入
的引數同時賦給 serial_numbe 及carton_no ,  我們測試代入 serial_number 的真實值, 可以走serial_number 的index ,
下面是我們在OEM中抓到的對應的這個語句,可惜引數只是 :V00001 及 :V00002 ,  按照procedure寫法,這兩個引數值是
一樣的, 但是看到的這個SQL的執行計劃卻是full table scan 。



AWR報告中也報這個語句執行需要 1 秒,但是我們手工代入serial_number 值,執行非常快 ,只需要幾十毫秒 。 奇怪了。


SELECT BATCH_NO, WIP_D_SN_MASTER.ROWID FROM WIP_D_SN_MASTER  
WHERE (SERIAL_NUMBER = :V00001 OR CARTON_NO = :V00002) AND ROWNUM = 1  ;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-627229/,如需轉載,請註明出處,否則將追究法律責任。

相關文章