一、查看现有的job
--查询用户job列表
SELECT * FROM USER_JOBS;
--查询数据库所有job
SELECT * FROM DBA_JOBS;
--查询当前用户job列表
SELECT * FROM ALL_JOBS;
二、job操作
--创建job
Begin
sys.dbms_job.isubmit(
job => <job_id>,
what => '/* job的注释说明 */ PROCEDURE;',
next_date => TO_DATE('2021/03/14 04:00:00','YYYY/MM/DD HH24:MI:SS'),
interval => 'TRUNC(sysdate+1)+4/24');
Commit;
End;
--修改job
begin
SYS.DBMS_JOB.CHANGE(
job => 21,
what => '/*每日1点同步门店信息*/ SYNC_WINF_STORE();',
next_date => to_date('2021/03/14 01:00:00','YYYY/MM/DD HH24:MI:SS'),
interval => 'TRUNC(sysdate+1)+1/24'
);
commit;
end;
--停用job
begin
SYS.DBMS_JOB.BROKEN(<JOB_ID>,TRUE);
COMMIT;
end;
--删除job
begin
SYS.DBMS_JOB.BROKEN(<JOB_ID>,TRUE);
SYS.DBMS_JOB.REMOVE(<JOB_ID>);
commit;
end;
--参数说明
sys.dbms_job.isubmit(); 创建job的函数
job => 指定job的id。
what => 要运行的过程或脚本,一般建议将要定时的脚本封装为过程货函数,这样后期修改调整比较方便。
next_date => 下次执行的时间,不填写默认立即执行。
interval => job轮循的周期,如 TRUNC(sysdate+1)+4/24 代表每日凌晨4:00执行 。