使用Oracle 11.2。構建sql執行計劃歷史
有沒有建立一個執行計劃的歷史就像一個執行計劃可能會如何變化奧弗時間的標準方法?我想過跟蹤dba_hist_sql_plan中的更改(計劃在我們的環境中保留了10天)。但是所有計劃都存儲在dba_hist_sql_plan中,還是依賴於awr配置?或者有沒有一個標準的做法(可能沒有dba_hist_sql_plan)。 我對Oracle很陌生,所以每個想法都是受歡迎的。
使用Oracle 11.2。構建sql執行計劃歷史
有沒有建立一個執行計劃的歷史就像一個執行計劃可能會如何變化奧弗時間的標準方法?我想過跟蹤dba_hist_sql_plan中的更改(計劃在我們的環境中保留了10天)。但是所有計劃都存儲在dba_hist_sql_plan中,還是依賴於awr配置?或者有沒有一個標準的做法(可能沒有dba_hist_sql_plan)。 我對Oracle很陌生,所以每個想法都是受歡迎的。
並非所有的計劃都存儲在AWR。但是,通常情況下,您感興趣的所有計劃都是。很少有人有興趣跟蹤對特定快照窗口中不佔用大量資源的查詢的查詢計劃更改。他們通常只對頂級資源消費者的行爲感興趣。您可以在每個快照中AWR捕獲的前N個查詢中調整N個值。
如果你正在尋找一個單一的數據庫,最簡單的方法是將數據保存在AWR只要你可能需要它。如果您希望數據能夠在10天后恢復,最簡單的選擇是增加AWR保留。 AWR數據不佔用太多的磁盤空間,因此讓Oracle保留更多數據比寫自己的任何東西容易得多。
有時候,人們配置,從許多單個的數據庫採取AWR數據,並將其寫入到一箇中央數據庫的複製過程。這需要相當數量的設置,但它使跨數據庫比較信息變得容易(要麼比較dev/test/staging /生產環境中的數據,要麼跨多個客戶端特定實例比較數據)。
如果你只是尋找一個快速的方式來顯示單個SQL_ID所有執行計劃:'選擇表*(dbms_xplan.display_awr_cursor(SQL_ID =>「a_sql_id」));' –