oracle定时器job

引用
https://blog.csdn.net/sinat_35626559/article/details/78912828
https://www.cnblogs.com/hoojo/p/oracle_procedure_job_interval.html

创建测试表

create table t_test_renbing(
current_time timestamp
);

创建测试用存储过程

create or replace procedure pro_job_test_renbing
as
begin
--dbms_output.put_line('系统时间:' || to_char(sysdate, 'dd-mm-yyyy hh24:mi:ss'));
insert into t_test_renbing values(sysdate);
commit;
end;

运行过程,进行测试

begin
pro_job_test_renbing;
commit;
end;

创建job,将job注册到dba_jobs表中定时启动job调用存储过程

declare
job1 number; --此处自动生成jobid
begin
dbms_job.submit(job1, 'pro_job_test_renbing;', sysdate, 'sysdate+20/(246060)');--每10秒插入一条记录
commit;
end;

declare
job1 number; --此处自动生成jobid
begin
dbms_job.submit(job => job1 ,
what => 'outuser.pro_job_test_renbing;',
next_date => TRUNC(SYSDATE)+8/24,
interval => 'TRUNC(sysdate) + 1 +8/(24)');
commit;
end;

查询job视图

select * from dba_jobs;
select * from all_jobs;
select * from user_jobs;

查询运行中的job

select * from dba_jobs_running;

手动调用job

begin
dbms_job.run(464);--和select * from user_jobs; 中的job值对应,看what对应的过程
end;

停止job

begin
dbms_job.broken(jobId,true,next_date); /*停止一个job,jobId, job的ID,里面参数true也可是false,next_date(某一时刻停止)也可是sysdate(立刻停止)。 */
commit;
end;

-修改JOB

begin
dbms_job.change(62 ,job_country_warnRecord;', sysdate,'sysdate+2/(24*60)' );
commit;
end;

修改job的间隔时间

begin
dbms_job.interval(job,interval); /job job的ID,interval: 计算下一次任务执行的时间表达式/
commit;
end;

修改job的下次执行时间

begin
dbms_job.next_date(job,next_date); /job: job 的ID;nex_date:要修改后的计算下一次执行的时间表达式/
commit;
end;

修改定时任务 job 要执行的操作

begin
dbms_job.what('newProcedures();'); /newProcedures(); 要更改的新操作名称/
commit;
end;

删除job

begin
dbms_job.remove(463);--和select * from user_jobs; 中的job值对应,看what对应的过程
commit;
end;

原文地址:https://www.cnblogs.com/keyboardone/p/9258325.html