1. 程式人生 > >打開關閉oracle自動表分析

打開關閉oracle自動表分析

cal job 計劃 nbsp mon scheduler ase parameter 說明

oracle 表的統計信息,跟他的執行計劃很有關聯

執行計劃的正常是否,跟SQL的執行速度很有關系

首先講解一下如何查看一個數據庫的是否開啟自動統計分析

1、查看參數:STATISTICS_LEVEL(在V$PARAMETER表中查看數據的情況),10g中默認為typical,只有將STATISTICS_LEVEL參數設置為ALL或者typical才能讓ORACLE識別過期的統計信息。

2、自動表分析每天晚上10開始,那說明應該是JOB定時在處理,自動統計分析的JOB是:GATHER_STATS_JOB。

每個對象都有相應的屬性,JOB相應的屬性記錄在DBA_SCHEDULER_JOBS這個字典中。

在DBA_SCHEDULER_JOBS這個視圖中特別需要關註的,enabled這個字段,TRUE:表示啟用,FALSE: 表示關閉

3、查看每天JOB的執行情況

通過查看DBA_SCHEDULER_JOB_RUN_DETAILS這個視圖,可以觀察自動表分析的JOB有沒有執行過 GATHER_STATS_JOB

如何開啟自動統計信息收集

1、修改參數值

alter system set STATISTICS_LEVEL=typical;

2、啟動GATHER_STATS_JOB這個JOB

BEGIN

DBMS_SCHEDULER.DISABLE(‘GATHER_STATS_JOB‘);

END;

如何關閉統計信息

1、修改參數值

alter system set STATISTICS_LEVEL=basic;

2、關閉GATHER_STATS_JOB這個JOB

BEGIN

DBMS_SCHEDULER.ENABLED(‘GATHER_STATS_JOB‘);

END;

監控數據的變化程度,關於增、刪、改數據的變化量

記錄在DBA_TAB_MODIFICATIONS視圖裏面。我們在查詢DBA_TAB_MODIFICATIONS視圖的時候有可能查詢不到結果,或者查詢的結果不準確,這個時候需要用DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO過程將內存中的信息刷新到該視圖中

打開關閉oracle自動表分析