Oracle Job的CRUD测试

来源:互联网 发布:进口刀具刃具 知乎 编辑:程序博客网 时间:2024/05/21 11:03

常用方法:

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。

一些测试脚本:

-- 测试 submitdeclare  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;-- 测试 removedeclare  job_id pls_integer := 27;begin  sys.dbms_job.remove(job => job_id);  commit;end;-- 测试 rundeclare  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;-- 测试 changedeclare  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_datedeclare  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自动任务实用指南

0 0