一、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、作业执行切换文件问题(两路服务器都需挂载共享文件)