【Oracle】11g Oracle自動收集統計資訊

dmcatding發表於2017-03-24

在oracle 10g之前並沒有自動收集統計資訊的機制,對統計資訊的收集一般都是由DBA手工編寫SHELL指令碼來實現。這樣就會出現根據表或者其他物件的變更,需要頻繁的變更SHELL指令碼來適應資料庫物件的變更。另外,可能很多DBA沒有意識到統計資訊對最佳化器的重要性,導致很多的SQL無法得到正確的執行計劃。


基於統計資訊對CBO的重要性,所以oracle從10g版本開始引入了自動收集統計資訊的功能。自動統計資訊收集作業能夠每天收集統計資訊。預設情況下,該收集作業會自動判斷如下方面的內容。

1、需要對哪些物件收集統計資訊。

2、需要對哪些統計資訊已經過期的物件重複收集統計資訊。

3、以估算模式收集統計資訊的取樣比例(預設是以估算模式進行收集)

4、需要對哪些列收集直方圖統計資訊以及相應的Bucket 的數量。

5、是否啟用並行收集以及相應的並行度。


當然使用oracle自動收集統計資訊,必須要確保oracle的引數statistics_level的值為:TYPICAL或者 ALL 
【Oracle】11g Oracle自動收集統計資訊

1. 11g的是 週一到週五 22:00-2:00 週六週日 6:00-4:00


SELECT w.window_name, w.repeat_interval, w.duration, w.enabled FROM dba_autotask_window_clients c, dba_scheduler_windows w
WHERE c.window_name = w.window_name AND c.optimizer_stats = 'ENABLED';


2. 檢視job


    select client_name,status from dba_autotask_client;


3. 禁用自動收集


    exec DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);


4. 啟用自動收集


    exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);
    
    
檢視錶的統計資訊是否過期
SELECT owner,
       table_name,
       object_type,
       stale_stats,
       last_analyzed
FROM   dba_tab_statistics
WHERE  owner = '&OWNER'
       AND table_name = '&TABLE_NAME';




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

相關文章