Oracle的Sched.Jobs定时任务

版权声明:本文为博主原创文章,未经博主允许不得转载。原创不易,转载请注明出处。 https://blog.csdn.net/sinat_27933301/article/details/84780834

一、CREATE_JOB过程

BEGIN
  SYS.DBMS_SCHEDULER.CREATE_JOB
    (
       job_name        => 'MYDB.JOB_READ_FILES'
      ,start_date      => TO_TIMESTAMP_TZ('2018/01/01 01:00:00.000000 +08:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
      ,repeat_interval => 'freq=HOURLY;INTERVAL=1'
      ,end_date        => NULL
      ,job_class       => 'DEFAULT_JOB_CLASS'
      ,job_type        => 'PLSQL_BLOCK'
      ,job_action      => 'begin FILES_DEAL.RUN; end;'
      ,comments        => NULL
    );
    
  SYS.DBMS_SCHEDULER.ENABLE
    (name                  => 'MYDB.JOB_READ_FILES');
END;
/

JOB_NAME:提供指定作业名的方法。
JOB_TYPE:指定你正创建的作业类型。作业可包括PL/SQL、存储过程、可执行文件或Java程序。
JOB_ACTION:指定作业将执行的精准的过程、命令或脚本。
START_DATE和END_DATE:指定新作业启动和结束的日期。
REPEAT_INTERVAL:指定Scheduler执行一个作业的频率。
COMMENTS:允许包括关于被调度作业的任何注释。
ENABLED:指定在创建作业时该作业是否启动或禁用。

二、设置重复时间间隔
Frequency:日历表达式,由FREQ关键字标识,取值为YEARLY、MONTHLY、WEEKLY、DAILY、HOURLY、MINUTELY和SECONDLY。
Repeat interval:时间间隔,由INTERVAL关键字标识,执行频率。
Specifiers:提供关于一个作业何时应该运行的详细信息,取值为BYMONTH、BYWEEKND、BYYEARDAY、BYMONTHDAY、BYDAY、BYHOUR、BYMINUTE和BYSECOND。

每3天执行一次作业:FREQ=DAILY;INTERVAL=3
每周一执行一次作业:FREQ=WEEKLY;BYDAY=MON
每隔一周的周五执行一次作业:FREQ=WEEKLY;INTERVAL=2;BYDAY=FRI

三、实际遇到问题
1、时区问题(+08:00)
2、回车换行问题(WINDOWS和UNIX不同)
3、作业执行切换文件问题(两路服务器都需挂载共享文件)

猜你喜欢

转载自blog.csdn.net/sinat_27933301/article/details/84780834