使用dbms_scheduler包创建定时任务
本文使用dbms_scheduler的create_job创建执行存储过程的定时任务
- 创建一个job
- job_type指定'STORED_PROCEDURE'
- job_action中填入要执行的存储过程名字
- start_date指定起始时间,用于计算后续执行的时间
- repeat_interval说明时间间隔,可以参考Calendaring Syntax。
BEGIN
dbms_scheduler.create_job(
job_name => 'test_scan',
job_type => 'STORED_PROCEDURE',
job_action => 'p_task_scan_used_test',
start_date => sysdate,
repeat_interval=> 'FREQ=MINUTELY;INTERVAL=10');
END;
- 创建后通过系统视图检查
select * from user_scheduler_jobs;
- 取消AUTO_DROP
默认会在任务正确执行完成后删除任务,此处修改该属性不删除。
begin
dbms_scheduler.set_attribute(
name => 'test_scan',
attribute => 'AUTO_DROP',
value => FALSE);
end;
-
执行时传入参数
- 设置参数个数
begin
dbms_scheduler.set_attribute(
name => 'mac_scan',
attribute => 'NUMBER_OF_ARGUMENTS',
value => 2);
end;
- 设置参数值
begin
dbms_scheduler.SET_JOB_ARGUMENT_VALUE (
job_name => 'test_scan',
argument_position => 1,
argument_value => '1000');
end;
begin
dbms_scheduler.SET_JOB_ARGUMENT_VALUE (
job_name => 'test_scan',
argument_position => 2,
argument_value => '5000');
end;
- 测试job是否可以正确执行
select * from user_scheduler_job_run_details;
select * from user_scheduler_job_log;
- 启动定时任务
begin
dbms_scheduler.enable(
name => 'test_scan');
end;
至此,定时任务部署完毕。
-- EOF --