整理scheduler這一部分,源於最近發現系統上自動采集統計信息的執行時間有些異常,執行時間被定義到了上午(這並不是一個很合理可靠的時間).在重新修改配置的同時,也順便整理了這一塊內容.
首先簡單講一下oracle 10g scheduler,10g引入dbms_scheduler來替代先前的dbms_job,在功能方面,它比dbms_job提供了更強大的功能和更靈活的機制/管理.它主要由以下幾大塊構成:
1.作業(job):
一個調度程序作業的實體.可以由dbms_scheduler.create_job創建生成.它可以自行指定作業屬性,也可以調用我們預先創建的一系列scheduler/ program/ chain/ job_class/ window/ window_group來匹配其作業屬性.
2.調度(scheduler):
一個任務計劃執行的時間策略.比如我們想要創建一個晚上3點執行的任務計劃,就可以創建一個調度,凡是符合這個調度要求的,都可以調用這個我們預先創建好的調度.可以用dbms_scheduler.create_schedule來創建一個調度.
比如我創建一個名字叫MYTEST_SCHEDULE的調度,每天4:00執行.
Begin
dbms_scheduler.create_schedule(
repeat_interval=>'FREQ=DAILY;BYHOUR=4;BYMINUTE=0;BYSECOND=0',
start_date=>systimestampattimezone'PRC',
comments=>'---thisismytestschedule---',
schedule_name=>'MYTEST_SCHEDULE');
end;
3.程序(program):
10g下的program支持分為3種形式,PL/SQL BLOCK/STORED PROCEDURE/EXECUTABLE.可以使用DBMS_SCHEDULER.CREATE_PROGRAM來創建一個program.
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM(
program_name=>'mytest_program_1',
program_action=>'updatemytestsetid=id+1;',
program_type=>'PLSQL_BLOCK',
number_of_arguments=>0,
comments=>'',
enabled=>TRUE);
END;