Oracle Job定时任务的使用详解
发布时间:2020-12-12 13:59:40 所属栏目:百科 来源:网络整理
导读:转自:http://www.cnblogs.com/Chestnuts/p/7068456.html Oracle中的job能为你做的就是在你规定的时间格式里执行存储过程,定时执行一个任务 。 下面是一个小案例,定时每15分钟向一张表插入一条数据 一、步骤1 1. 创建一张测试表 -- Create tablecreate tab
Oracle中的job能为你做的就是在你规定的时间格式里执行存储过程,定时执行一个任务 。 下面是一个小案例,定时每15分钟向一张表插入一条数据 一、步骤11. 创建一张测试表 -- Create table create table A8 ( a1 VARCHAR2(500) ) tablespace DSP_DATA pctfree 10 initrans 1 maxtrans 255 storage ( initial 64K next 1M minextents 1 maxextents unlimited ); 2.创建存储过程 实现向测试表插入数据 create or replace procedure proc_add_test as begin insert into a8 values (to_char(sysdate,'yyyy-mm-dd hh:mi'));/*向测试表插入数据*/ commit; end; 3.创建job定时任务 实现自动调用存储过程(当前时间 17:03) declare job number; BEGIN DBMS_JOB.SUBMIT( JOB => job,/*自动生成JOB_ID*/ WHAT => 'proc_add_test;',/*需要执行的存储过程名称或SQL语句*/ NEXT_DATE => sysdate+3/(24*60),/*初次执行时间-下一个3分钟*/ INTERVAL => 'trunc(sysdate,''mi'')+1/(24*60)' /*每隔1分钟执行一次*/ ); commit; end; 4.也就是应该从17:06开始 每隔1分钟执行一次存储过程 下面是截止17:12分的测试表的数据 二、步骤2 1.可以通过查询系统表查看该job信息 select * from user_jobs; 2.手动sql调用job (直接调用job可以忽略开始时间) begin DBMS_JOB.RUN(40); /*40 job的id*/ end; 3.删除任务 begin /*删除自动执行的job*/ dbms_job.remove(40); end; 4.停止job begin dbms_job.broken(v_job,true,next_date); /*停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 */ commit; end; 5.修改间隔时间 begin dbms_job.interval(job,interval); commit; end; 6.修改下次执行时间 begin dbms_job.next_date(job,next_date); commit; end; 7.修改要执行的操作 begin dbms_job.what(jobno,'sp_fact_charge_code;'); --修改某个job名 commit; end; 三 其他知识 1.存job信息的表user_jobs主要字段说明 |