自動更新Oracle統計資訊

2021-08-28 10:07:45 字數 995 閱讀 2420

1.需求描述:

oracle不定時更新資料表的統計資訊,當資料量增多時,更新頻率逐漸變慢;

當編寫某些大的查詢sql時,如訪問最近乙個月的銷售彙總,調優後的評估值在1000左右,執行時間在10幾分鐘;但是一兩個月後,執行時間突然增長,4,5個小時都查詢不出了結果;

2.需求分析:

通過分析發現,某些大表的統計日期已經有2,3個月沒有更新了。

select table_name, num_rows, last_analyzed from user_tables ;

通過更新大表的統計時間,執行時間又達到預期的效果:

call dbms_stats.gather_table_stats('使用者名稱','表名');

3.自動化指令碼

將如下兩個指令碼存放到同一目錄下,注意修改資料庫配置引數,然後使用windows計畫任務定期執行動態更新;

指令碼1:自動更新oracle統計資訊.bat

title 自動更新oracle統計資訊[%date%%time%]

sqlplus username/[email protected]/db_name @gen_sqls.sql | find "call dbms_stats.gather_table_stats">stats_sqls.sql

echo exit>>stats_sqls.sql

sqlplus username/[email protected]/db_name @stats_sqls.sql

echo 指令碼執行完成

指令碼2:gen_sqls.sql

select

'call dbms_stats.gather_table_stats(''使用者名稱'','''|| table_name ||''');' as sqls

from user_tables a

where a.last_analyzed and num_rows > 1000

order by num_rows ;

exit;

自動更新Oracle統計資訊

oracle不定時更新資料表的統計資訊,當資料量增多時,更新頻率逐漸變慢 當編寫某些大的查詢sql時,如訪問最近乙個月的銷售彙總,調優後的評估值在1000左右,執行時間在10幾分鐘 但是一兩個月後,執行時間突然增長,4,5個小時都查詢不出了結果 通過分析發現,某些大表的統計日期已經有2,3個月沒有更...

Oracle統計資訊的更新

手工更新的語句是 execute dbms stats.gather table stats user name,table name 使用手工更新的場景 1.oracle有個自動更新統計資訊的job,大約在每天晚上執行。所以在白天統計資訊不會被更新掉 2.統計資訊對cbo的影響有個閥值,尤其是對範...

自動更新原理

安裝補丁的時候,客戶端的主程式一般是要關閉的,除非採用動態解除安裝 調入元件的技術,比如網路遊戲,就是盡量讓玩家邊玩遊戲邊更新。人們嫌這樣的公升級仍然太麻煩,後來出現了b s結構,大家像抓住了救命稻草一樣的追捧至今,希望能從這些勞動中解脫出來。b s結構就是瀏覽器 伺服器結構,它所有的功能,都是在瀏...