调度任务(Job Scheduling)
官方文档:Scheduling Jobs with Oracle Scheduler
在Oracle数据库中,SCHEDULE 主要是与 调度任务(Job Scheduling) 相关的概念。它用于设置和管理数据库中任务(或称作作业)的执行计划。Oracle 提供了一个强大的调度系统,
可以定时执行数据库操作、存储过程或脚本,通常通过 Oracle DBMS_SCHEDULER 来实现。SCHEDULE 就是任务调度的一个核心组成部分。
Oracle 中的调度任务概念:
Oracle 中的 SCHEDULE 主要用于定义如何、何时、以什么频率执行某个特定的任务。通过调度,可以安排定期运行的任务,减少手动干预。调度器允许用户自动执行 SQL 查询、PL/SQL 程序、外部作业等。
- DBMS_SCHEDULER 包
Oracle 的调度作业通过 DBMS_SCHEDULER 包来管理。SCHEDULE 是在这个包中定义的一部分,主要用于设置作业执行的时间、周期、重复规则等。通过创建一个 SCHEDULE,可以安排定时任务。
示例:创建一个调度器
BEGIN
DBMS_SCHEDULER.create_schedule(
schedule_name => 'MY_SCHEDULE', --调度任务的名字
start_date => SYSTIMESTAMP, -- 任务开始时间
repeat_interval => 'FREQ=DAILY; BYHOUR=12; BYMINUTE=0; BYSECOND=0', -- 重复间隔:每天中午12点执行
end_date => NULL, -- 任务结束时间
comments => 'Schedule for daily job at noon' --注释
);
END;
/
- 常用的重复频率表达式(repeat_interval)
repeat_interval 是调度作业时最常用的参数,它决定了任务的执行频率。常见的设置包括:
FREQ=DAILY:每天执行。
FREQ=HOURLY:每小时执行。
FREQ=WEEKLY:每周执行。
FREQ=MONTHLY:每月执行。
同时,可以通过BYHOUR, BYMINUTE, BYSECOND 等来指定更精细的执行时间。例如:
FREQ=DAILY; BYHOUR=10; BYMINUTE=30 表示每天10点30分执行任务。
- 查看和管理调度任务
使用 DBMS_SCHEDULER 还可以查看已创建的调度任务、管理任务的状态等。例如:
SELECT * FROM DBA_SCHEDULER_JOBS; -- 查看所有作业
SELECT * FROM DBA_SCHEDULER_SCHEDULES; -- 查看所有调度器