Oracle 定时任务

查询当前用户正在运行job

1
select * from user_jobs;

创建定时任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
-- 方式一
declare job_n number;
begin
dbms_job.submit(job_n ,'PROC_XXX;',sysdate,'sysdate+3/24');
commit;
end;

-- 方式二
declare
job number;
begin
dbms_job.submit(
job => job, /*自动生成job_id*/
what => 'get_warning_info(2, 202, ''2,44,11'');', /*需要执行的存储过程名称或sql语句*/
next_date => sysdate, /*初次执行时间-立即执行*/
interval => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分钟执行一次*/
);
commit;
end;

调用job

1
2
3
begin
dbms_job.run(jobid);
end;

停止&删除job

1
2
3
4
5
6
7
8
begin   
-- 停止
dbms_job.broken(jobId,true,next_date);
-- 删除
dbms_job.remove(jobId);
commit;
end