11g預設啟動了三個任務,分別是統計資訊收集、段指導、自動 SQL 最佳化,預設執行時間是週一到週五是執行4小時(22:00——次日2:00),週六日執行20小時(6:00——次日2:00)。
禁用這三個任務的sql為:
BEGINdbms_auto_task_admin.disable(client_name=>'auto optimizer stats collection',operation=>NULL,window_name=>NULL);dbms_auto_task_admin.disable(client_name=>'auto space advisor',operation=>NULL,window_name=>NULL);dbms_auto_task_admin.disable(client_name=>'sql tuning advisor',operation=>NULL,window_name=>NULL);END;
統計資訊收集的任務一般沒必要禁掉,但段指導、自動 SQL 最佳化卻可以根據需要禁掉。
重新啟用任務的sql只是把上面的disable改為enable就可以了,如下:
BEGINdbms_auto_task_admin.enable(client_name=>'auto optimizer stats collection',operation=>NULL,window_name=>NULL);dbms_auto_task_admin.enable(client_name=>'auto space advisor',operation=>NULL,window_name=>NULL);dbms_auto_task_admin.enable(client_name=>'sql tuning advisor',operation=>NULL,window_name=>NULL);END;
附secooler的相關文件:
在Oracle的版本中提供了自動的。在部署安裝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
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中的不相同
下面是在中檢視收集統計資訊作業的方法
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.小結
再一次印證:預設值並不總是最美麗的!我們應該瞭解每一個新特性帶給我們的便捷和優勢,更重要的是我們要清醒的認識到它可能帶來的弊端和影響。請充分評估和測試後再為我所用