應該有開發測試相關的兄弟常常發現,某些半夜跑的報表系統,在系統開始時候好好的,但是數據量越來越大的情況下,報表系統會越來越慢。
一般我們可以理解為sql需要優化,存儲需要優化等等。
這裡,如果我們使用的是Oracle 10G以上版本,就要小心了,有可能是Oracle自己搞的鬼。
Oracle10g增加了一個新的任務,用來自動分析資料庫,已增加CBO執行的正確性。這個任務就是GATHER_STATS_JOB,任務定義周一到周五的半夜執行,和周六日全天執行。
出發點很好,但是,大部分業務晚上常常也要跑大的查詢,或者執行計劃改變,會引起新的性能問題。這個都是可以預見的。
下面備忘。
查看任務詳情:
SELECT owner,job_name,state,last_start_date,last_run_duration,failure_count
FROM dba_scheduler_jobs WHERE job_name = 'GATHER_STATS_JOB';
select PROGRAM_ACTION from dba_scheduler_programs where PROGRAM_NAME = 'GATHER_STATS_PROG';
任務執行歷史:
SELECT log_id, job_name, status,
TO_CHAR (log_date, 'DD-MON-YYYY HH24:MI') log_date
FROM dba_scheduler_job_run_details
WHERE job_name = 'GATHER_STATS_JOB';
禁用任務:
在sysdba下執行:
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
[火星人 ] Oracle經驗分享:GATHER_STATS_JOB 任務已經有841次圍觀