全面学习ORACLE Scheduler特性(5) Schedules调度Programs执行的Jobs
3.2Schedules调度Programs执行的Jobs
通过schedule调度program的执行的job,看到这样的形容是不是让你彻底晕头了,就说明你还是没搞明白10g中SCHEDULERS特性管理的jobs的含意,让三思更直白地给你描述描述。10g版本中SCHEDULER将JOB分成了多个部分,program负责做什么,schedule负责啥时候做,job就简单了,一个字:做。
前面几个小节,三思已经分别演示了创建管理Jobs,创建管理Programs以及创建和管理Schedules,下面我们通过实例来演示,如何创建通过schedule调度program的执行的job吧。
首先,创建一个program,操作如下:
SQL>BEGIN
2DBMS_SCHEDULER.CREATE_PROGRAM(
3program_name=>'my_program1',
4program_action=>'/bin/date',
5program_type=>'EXECUTABLE',
6enabled=>TRUE);
7END;
8/
PL/SQLproceduresuccessfullycompleted.通过上述语句,我们定义了一个program,执行操作系统命令date,并输入到dt.log文件中。
接下来定义一个schedule,操作如下:
SQL>begin
2DBMS_SCHEDULER.CREATE_SCHEDULE(
3schedule_name=>'my_first_schedule',
4start_date=>SYSDATE,
5repeat_interval=>'FREQ= DAILY ;INTERVAL=1',
6comments=>'Every1weeks');
7END;
8/
PL/SQLproceduresuccessfullycompleted.定义调试为每周执行一次。此处repeat_interval可根据实现情况进行修改。
最后,创建job,按照指定的schedule,执行program,操作如下:
SQL>BEGIN
2DBMS_SCHEDULER.CREATE_JOB(
3job_name=>'execOScmd',
4program_name=>'my_program1',
5schedule_name=>'my_first_schedule',
6enabled=>true);
7END;
8/
PL/SQLproceduresuccessfullycompleted.创建job时,start_date,repeat_interval,job_action等均无须指定,因为这些参数将由program和schedule来控制,这样,操作完成后,ORACLE就会自动定时(当前设置为每周执行一次)program中定义的操作。
要查看当前的执行情况,通过*_scheduler_job_run_details即可查询(*_scheduler_job_log也可以,不过该视图中信息不如detail中全面)。例如,查看刚刚创建的"EXECOSCMD"任务的执行情况,执行命令如下:
SQL>selectlog_id,log_date,status,additional_info
2fromuser_scheduler_job_run_details
3wherejob_name='EXECOSCMD'
4;
LOG_IDLOG_DATESTATUSADDITIONAL_INFO
----------------------------------------------------------------------
1376017-AUG-0902.47.53.7SUCCEEDED
34050PM+08:00看完这个示例之后,你是否对10g中的SCHEDULER特性多了些了解呢?千万表自满,SCHEDULER特性的功能还多着哪,接着往下看吧。
=======================================
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。