Oracle SQL執行計劃歷史資訊表DBA_HIST_SQL_PLAN的使用

feelpurple發表於2017-02-21
DBA_HIST_SQL_PLAN檢視記錄SQL執行計劃的歷史資訊,對於SQL調優非常有用,可以透過SQL_ID等資訊定位到SQL具體的執行計劃;
而透過EXPLAIN PLAN得到的執行計劃則是當前的執行計劃

分析AWR,在裡面找到一條大SQL


透過這條SQL的SQL_ID,可以定位到之前這條SQL具體的執行計劃


可以看到這條SQL分別使用了3種執行計劃,一種使用主鍵索引,另外分佈使用其他兩個聯合索引,進而導致執行計劃不穩定

調優的思路:
透過HINT固定執行計劃為使用主鍵索引
UPDATE /*+ index(OSL_ODC_GENERIC_TARGET PK_OSL_ODC_GENERIC_TARGET) */ OSL_ODC_GENERIC_TARGET SET N_STATUS = :1 , C_ERRORCODE = :2 , D_UTCSTATUSTIME = :3 , D_UTCSTARTTIME = :4 WHERE ((N_ID = :5 ) AND (N_STATUS IN (:6 , :7 )));

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

相關文章