常用方法:
1、Submit(),创建一个新的job,并返回jobid;
2、Broken(),标识Job为已坏掉状态,但即使设置job为broken状态,也不会停止job的执行。补充:job如果由于某种原因未能成功之行,oracle将重试16次后,还未能成功执行,将自动被标记为broken(注:此功能未测试过)。
3、即使drop掉一个job,Oracle会自动创建一个新的job,jobid不同于原job。不论是broken()还是drop,都不能让job真正停下来。
4、Remove(),根据输入的jobid来删除一个job;
5、Run(),job被立即执行一次;
6、Change() 和 Next_Date(), Interval(), What() 功能类似,只不过Change是可更改全部,其他几个是只能改单项。
7、ISubmit(),允许录入一个 jobid ,若存在,则报错;否则指定该 jobid。
一些测试脚本:
-- 测试 submit
declare
job_id pls_integer;
begin
sys.dbms_job.submit(
job => job_id,
what => 'ETL_DAILY;',
next_date => to_date('2014-03-27 14:33:00', 'yyyy-mm-dd hh24:mi:ss'),
interval => 'sysdate + 1/1440'
);
dbms_output.put_line(job_id);
commit;
end;
-- 测试 remove
declare
job_id pls_integer := 27;
begin
sys.dbms_job.remove(job => job_id);
commit;
end;
-- 测试 run
declare
job_id pls_integer := 27;
begin
sys.dbms_job.run(job => job_id);
commit;
end;
-- 测试 broken 的 job,如何恢复
declare
job_id pls_integer := 27;
begin
sys.dbms_job.broken(job => job_id,
broken => TRUE);
commit; /* 若run 后,broken状态即消失 */
end;
-- 测试 change
declare
job_id pls_integer := 27;
begin
sys.dbms_job.change(
job => job_id,
what => 'ETL_DAILY;',
next_date => to_date('27-03-2014 16:17:00', 'dd-mm-yyyy hh24:mi:ss'),
interval => 'sysdate + 1/1440'
);
commit;
end;
-- 测试 next_date
declare
job_id pls_integer := 27;
begin
sys.dbms_job.next_date(
job => job_id,
next_date => to_date('27-03-2014 16:38:30', 'dd-mm-yyyy hh24:mi:ss')
);
commit;
end;
本文详细介绍了Oracle中Job的常用方法及测试脚本,包括如何创建、删除、运行、标记为损坏状态以及修改Job的基本属性。通过示例代码演示了如何使用DBMS_JOB包进行Job管理。
373

被折叠的 条评论
为什么被折叠?



