【Oracle笔记】详解Sched.Jobs定时任务

2022-05-12 08:29:46 浏览数 (3)

一、CREATE_JOB过程

代码语言:javascript复制
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。

代码语言:javascript复制
每3天执行一次作业:FREQ=DAILY;INTERVAL=3
每周一执行一次作业:FREQ=WEEKLY;BYDAY=MON
每隔一周的周五执行一次作业:FREQ=WEEKLY;INTERVAL=2;BYDAY=FRI

三、实际遇到问题

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

0 人点赞