ORCLE DBMS_JOB简单用法

1、新建例表

CREATE TABLE t(ID INT ,NAME CHAR(10));
 
2、建作业,从现在起开始每隔1分钟运行一次
declare
    job1 int;
begin
    dbms_job.submit(job       => job1,    --输出参数
                              what      => 'insert into t(id) values(1); commit;',    --添加JOB执行的SQL语句
                             next_date => sysdate,--此处不需加单引号
                             interval  => 'sysdate+1/1440');     --每隔1分钟执行1次,此处必须加单引号,sysdate+1指sysdate加1天,sysdate+1/1440指sysdate加1/24/60=1/1440也就是1分钟
    commit;    --注意加上此句,否则不能提交
    dbms_out.put_line(job1);   --打印JOBID
end;
 
查看表user_jobs字段JOB中就可以看到刚才打印的JOBID
3、手动运行JOB
BEGIN
    dbms_job.run(7);--参数为需要启动的JOBID
    COMMIT;
END;
4、更新JOB
begin
    dbms_job.change(job       => 7,
                              what      => 'insert into t(id) values(2); commit;',
                              next_date => sysdate,
                              interval  => 'sysdate+2/1440');
    commit;
end;
5、停用JOB

-- user_jobs.broken=Y/N

BEGIN
    dbms_job.broken(job => 7 ,broken => TRUE);
    COMMIT;
END;
停用后再启动JOB
BEGIN
    dbms_job.broken(job => 7 ,broken => FALSE);
    COMMIT;
END;
6、删除JOB
BEGIN
    dbms_job.remove(6);
    COMMIT;
END;
7、其它用法
--修改what(user_jobs.what)
BEGIN
    dbms_job.what(job => 7 ,what => 'insert into t(id) values(3); commit;');
    COMMIT;
END;
--修改next_date(user_jobs.next_date)
BEGIN
    dbms_job.next_date(job => 7 ,next_date => SYSDATE+2/1440);
    COMMIT;
END;
 
 
11gR2 DBMS_JOB用法请参考:
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_job.htm#BABHCBFD

 

-- End --

你可能感兴趣的:(dbms_job)