【Statistics】禁用11g的統計資料自動收集功能

secooler發表於2010-12-27
在Oracle的11g版本中提供了統計資料自動收集的功能。在部署安裝11g Oracle軟體過程中,其中有一個步驟便是提示是否啟用這個功能(預設是啟用這個功能)。這個功能貌似帶來了統計資料採集上的便捷,但是其中卻隱藏著效能隱患。在7*24小時的系統中這種自動執行的任務很有可能對系統效能帶來衝擊。

因此,我們酌情需要禁掉這項功能。本文給出禁止自動收集統計資訊的方法。

1.檢視自動收集統計資訊的任務及狀態
sys@ora11g> select client_name,status from dba_autotask_client;

CLIENT_NAME                           STATUS
------------------------------------- --------
auto optimizer stats collection       ENABLED
auto space advisor                    ENABLED
sql tuning advisor                    ENABLED

其中“auto optimizer stats collection”便是我們要尋找的自動收集統計資訊的任務名稱,它的狀態目前是啟用狀態。

2.禁止自動收集統計資訊的任務
我們可以使用DBMS_AUTO_TASK_ADMIN包完成這個任務。
sys@ora11g> exec DBMS_AUTO_TASK_ADMIN.DISABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);

PL/SQL procedure successfully completed.

sys@ora11g> select client_name,status from dba_autotask_client;

CLIENT_NAME                           STATUS
------------------------------------- --------
auto optimizer stats collection       DISABLED
auto space advisor                    ENABLED
sql tuning advisor                    ENABLED

此時“auto optimizer stats collection”任務已經被禁用,目的達到。

3.啟用自動收集統計資訊的任務
sys@ora11g> exec DBMS_AUTO_TASK_ADMIN.ENABLE(client_name => 'auto optimizer stats collection',operation => NULL,window_name => NULL);

PL/SQL procedure successfully completed.

sys@ora11g> select client_name,status from dba_autotask_client;

CLIENT_NAME                           STATUS
------------------------------------- --------
auto optimizer stats collection       ENABLED
auto space advisor                    ENABLED
sql tuning advisor                    ENABLED

4.10g中查詢方法與11g中的不相同
下面是在10g中檢視收集統計資訊作業的方法
sys@ora10g> col JOB_NAME for a16
sys@ora10g> col PROGRAM_NAME for a18
sys@ora10g> col SCHEDULE_NAME for a20
sys@ora10g> col SCHEDULE_NAME for a24
sys@ora10g> col JOB_CLASS for a20
sys@ora10g> select job_name, program_name, schedule_name, job_class from dba_scheduler_jobs where job_name = 'GATHER_STATS_JOB';

JOB_NAME         PROGRAM_NAME       SCHEDULE_NAME            JOB_CLASS
---------------- ------------------ ------------------------ --------------------
GATHER_STATS_JOB GATHER_STATS_PROG  MAINTENANCE_WINDOW_GROUP AUTO_TASKS_JOB_CLASS


注意10g中的查詢方法在11g中是不可用的。
sys@ora11g> select job_name, program_name, schedule_name, job_class from dba_scheduler_jobs where job_name = 'GATHER_STATS_JOB';

no rows selected

5.小結
再一次印證:預設值並不總是最美麗的!我們應該瞭解每一個新特性帶給我們的便捷和優勢,更重要的是我們要清醒的認識到它可能帶來的弊端和影響。請充分評估和測試後再為我所用。

Good luck.

secooler
10.12.27

-- The End --

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

相關文章