Oracle Job定时任务
1.创建一张测试表
– Create table
create table aaa
(
a1 VARCHAR2(500)
)
tablespace DA_DA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
2.创建存储过程 实现向测试表插入数据
create or replace procedure proc_test as
begin
insert into aaa values (to_char(sysdate, ‘yyyy-mm-dd hh:mi’));/向测试表插入数据/
commit;
end;
3.创建job定时任务 实现自动调用存储过程
declare
job number;
BEGIN
DBMS_JOB.SUBMIT(
JOB => job, /自动生成JOB_ID/
WHAT => ‘proc_test;’, /需要执行的存储过程名称或SQL语句/
NEXT_DATE => sysdate+3/(2460), /初次执行时间-下一个3分钟/
INTERVAL => ‘trunc(sysdate,’‘mi’’)+1/(2460)’ /每隔1分钟执行一次/
);
commit;
end;
===========
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
dbms.broken(job,broken,nextdate);
dbms_job.broken(v_job,true,next_date); /*停止一个job,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 */
5.修改间隔时间
dbms_job.interval(job,interval);
6.修改下次执行时间
dbms_job.next_date(job,next_date);
7.修改要执行的操作
dbms_job.what(jobno,‘sp_fact_charge_code;’); --修改某个job名