停掉oracle自帶job

wadekobe9發表於2012-02-02
狀況,昨晚10點有發生前天效能問題,又重新收集了一下就好了,這個時間點就可以定位到是oracle自帶的job收集統計資訊是有問題的



oracle的自動資訊收集功能是通過一個叫GATHER_STATS_JOB的任務來完成的,該任務呼叫過程dbms_stats.gather_database_stats_job_proc執行資訊收集,它會檢測哪些物件沒有統計資訊或者統計資訊比較陳舊,將優先對這些物件進行分析。而我們平時手工用的dbms_stats.gather_database_stats,是沒有分優先順序的,也就是它將對資料裡的所有物件進行分析,不管該物件有沒有被分析過。GATHER_STATS_JOB任務一般是安排在晚上10pm-6am,周未全天啟動。

 SELECT OWNER,
        JOB_NAME,
        to_char(last_start_date, 'yyyy-mm-dd hh24:mi:ss') last_start_date,
        to_char(next_run_date, 'yyyy-mm-dd hh24:mi:ss') next_run_date,
        PROGRAM_NAME,
        JOB_TYPE,
        JOB_ACTION
   FROM DBA_SCHEDULER_JOBS;


GATHER_STATS_JOB 就是這個東西


開關此Job
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
exec DBMS_SCHEDULER.ENABLE('GATHER_STATS_JOB');


oracle的自動資訊收集功能是通過一個叫GATHER_STATS_JOB的任務來完成的,該任務呼叫過程dbms_stats.gather_database_stats_job_proc執行資訊收集,它會檢測哪些物件沒有統計資訊或者統計資訊比較陳舊,將優先對這些物件進行分析。而我們平時手工用的dbms_stats.gather_database_stats,是沒有分優先順序的,也就是它將對資料裡的所有物件進行分析,不管該物件有沒有被分析過。GATHER_STATS_JOB任務一般是安排在晚上10pm-6am,周未全天啟動。
我所知道的大部分的正式庫都是將此job關閉的,然後再在以後的工作中有需要的時候逐個手動收集。
還有就是,如果要在正式庫上收集統計資訊的時候一定要選擇系統壓力小的時候,因為收集統計資訊本身就是一件很
消耗資源的事情

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

相關文章