dbms_scheduler包提供的计划任务,是比dbms_job更强大,更好管理。数据库为oracle 11g。
1、创建测试表
create table SCHEDULE_JOB_TEST(a date);
2、用dbms_scheduler创建job
begin
dbms_scheduler.create_job(job_name => 'test_schedule_job',
job_type => 'PLSQL_BLOCK',
job_action => 'insert into JOB_TEST values(sysdate);',
number_of_arguments => 0,
start_date => to_date('10-01-2020 00:00:00', 'dd-mm-yyyy hh24:mi:ss'),
repeat_interval => 'Freq=Minutely;Interval=5',
end_date => null,
job_class => 'DEFAULT_JOB_CLASS',
enabled => FALSE,
auto_drop => TRUE,
comments => '测试scheduler');
end;
/
3、说明
1) job_name:任务名称
2)job_type:oracle 11g支持4种,取值
‘PLSQL_BLOCK’, ‘STORED_PROCEDURE’, ‘EXECUTABLE’, or ‘CHAIN’
(plsql语句块、存储过程、外部程序、作业链条)
3) job_action:根据job_type的不同,有不同的含义
如果job_type指定的是PL/SQL块,就需要输入完整的PL/SQL代码;
如果job_type指定的是存储过程,就需要指定存储过程的名字;
如果job_type指定的外部程序,就需要输入script的名称或者操作系统的指令名;
如果job_type指定的作业链条,需要输入chain的名称;
4)number_of_arguments:job的参数
5)start_date:开始时间
6)repeat_interval:运行间隔时间
7)end_date:结束时间
8)job_class:指定任务关联的CLASS,默认值为DEFAULT_JOB_CLASS
9)enabled:指定任务是否启用
10)auto_drop:当该标志被置为TRUE时,ORACLE会在满足条件时自动删除创建的任务
任务已过期;
任务最大运行次数已达MAX_RUNS的设置值;
任务未指定REPEAT_INTERVAL参数,仅运行一次;
11)comments:注释信息
4、查询job
SELECT * FROM DBA_SCHEDULER_JOBS;
5、启用job
begin
dbms_scheduler.enable('test_schedule_job');
end;
/
6、执行job
begin
dbms_scheduler.run_job('test_schedule_job');
end;
/
7、停止job
begin
dbms_scheduler.disable('test_schedule_job');
end;
/
8、删除job
begin
dbms_scheduler.drop_job('test_schedule_job');
end;
/