ORACLE 10G不再SUPPORT RBO

kewin發表於2009-02-26
  
     從ORACLE 的官方文件 189702.1, 可以看到RBO的支援只到9IR2,到了10G,不再SUPPORT RBO。所以ORACLE 9I第二版是最後一個版本有RBO的SUPPORT。 在9R上的SUPPORT,也是有限度的支援:only fixes bugs such as internal (i.e. ORA-00600) errors, 'wrong-results' from queries, and backwards-compatibility issues. 不會再引入新的特性。
     雖然在10G,可以使用RBO作為優化器,但ORACLE沒有SUPPORT,而且可能在將來的某個版本去掉RBO。
    RBO在ORACLE 7時已經被CBO替換,但是由於ORACLE 早期CBO很多BUG,效能問題導致CBO未能推廣,經過幾代產品的發展、成熟,終於敢號稱在10G不再SUPPORT RBO。那如果有老系統執行在7,8,8i,9i的,可以考慮切換優化器模式。
    判斷當前系統執行在RBO模式有兩個方法:
   1)  optimizer_mode  引數為CHOOSE,而且沒有收集過資料庫的統計資訊;
   2)  optimizer_mode 引數為RULE。
   ORACLE 強烈要求資料庫在轉CBO前,需要經過充分的測試,以確保應用、SQL在CBO環境一樣正常工作。如果在發現有些SQL在CBO模式下的確效能很差,那可以採用儲存大綱(Stored outlines)的方式來保留以前的執行路徑、執行計劃。Stored outlines 不會隨著ORACLE 版本、CBO模式的改變而改變。
   收集統計分析的方法:
  通過 DBMS_STATS package 加上DBMS_JOB 去收集。
 

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

相關文章