Oracle 作业
2021-10-22 16:10:26

Oracle 作业


dbms_job与 dbms_scheduler 用于安排和管理作业队列,通过使用作业,可以使ORACLE数据库定期执行特定的任务。

一. dbms_job

1.1. 创建

variable jobno number;
begin
dbms_job.submit(:jobno,'proce_t;', sysdate, 'sysdate+1/24/60');
commit;
end;
/

1.2. 参数

Job 输出变量,是此任务在任务队列中的编号。

what 执行的任务的名称及其输入参数。

next_date 何时运行这个工作。写Job的时候可以不指定该值。

interval 任务执行的时间间隔。

每天运行一次
'SYSDATE + 1'
每小时运行一次
'SYSDATE + 1/24'
每10分钟运行一次
'SYSDATE + 10/(6024)
每30秒运行一次
'SYSDATE + 30/(60
24*60)'
每隔一星期运行一次
'SYSDATE + 7'

1.3. 管理

查看用户job
select * from user_jobs;

删除job
exec dbms_job.remove(jobno);

修改下次执行时间
exec dbms_job.next_date(jobno, next_date);

修改间隔时间
exec dbms_job.interval(jobno, interval);

启动job
exec dbms_job.run(jobno);

停止job
exec dbms.broken(jobno, true, nextdate);

查看进程数
show parameter job_queue_processes;
必须大于0,否则执行下面的命令修改:
alter system set job_queue_processes=10;

二. dbms_scheduler

在Oracle 10g之前,我们通过DBMS_JOB来管理定时任务;而10g之后,则推荐使用DBMS_SCHEDULER来管理定时任务,因为它提供了更强大的功能和灵活的机制。

2.1. 创建

begin
dbms_scheduler.create_job (
job_name => 'test',
job_type => 'STORED_PROCEDURE',
job_action => 'proce_t',
start_date => sysdate,
repeat_interval => 'FREQ=MINUTELY;INTERVAL=1',
enabled => true
);
end;
/

2.2. 参数

job_name: 必选, 任务名称
job_type: 必选, 任务类型

  • PLSQL_BLOCK, -- 执行一个PL/SQL匿名快

  • STORED_PROCEDURE, -- 执行一个存储过程

  • EXECUTABLE, -- 执行一个外部程序

  • CHAIN -- 执行一个CHAIN

job_action: 必选, 任务内容, 与job_type配合使用
start_date : 可选, 首次执行时间, 为空时表示立即执行
repeat_interval: 可选, 执行频率, 为空时表示只执行一次

  • FREQ=MINUTELY; -- 表示间隔单位, 可选值有YEARLY, MONTHLY, WEEKLY, DAILY, HOURLY, MINUTELY, SECONDLY

  • INTERVAL=1 -- 表示间隔周期

enabled: 可选, 是否启用任务

2.3. 管理

查看用户scheduler_job
select * from user_scheduler_jobs;

删除scheduler_job
exec dbms_scheduler.drop_job(job_name => 'CLEANQUEUE');

查看JOB运行日志
select log_id, log_date, status from user_scheduler_job_run_details where job_name='TEST_JOB1';

调度作业
exec dbms_scheduler.run_job('test');

停止作业
exec dbms_scheduler.stop_job('test');


嫌麻烦不想填写表单?点击立即扫码联系销售人员。
感兴趣的产品:
*试用单位:
*所在省份:
*单位地址:
*联系人:
*联系电话:
*您主要关注哪些方面:
您从何处了解到诸葛运帷:

免费试用 ×
微信扫码,立即联系销售经理,或电话、短信致电均可。或返回填写表单
刘经理:13811576433
赵经理:18611012818
立即咨询 ×
微信扫码,立即联系销售经理进行咨询,或电话、短信致电均可。
刘经理:13811576433
赵经理:18611012818