- 存储过程
- 定时任务
一、存储过程
create or replace procedure my_procedure
as
-- 声明变量
begin
-- 业务逻辑
exception
with others then
-- 异常处理
end;
二、定时任务
declare
-- submit返回结果,这个值用来唯一标识一个工作
job_val NUMBER;
begin
-- job 唯一标志
sys.dbms_job.submit(job => job_val;
-- 存储过程 varchar2
what => '存储过程名称;';
-- 下一次执行时间 DATE
next_date => sysdate;
-- 时间间隔 varchar2
interval => 'trunc(sysdate + 1) + (2 * 60) / (24 * 60)';
commit;
end;
2.1、操作指令
-- 查询all_jobs,其中存在job_id,下面会用到
select * from all_jobs;
-- 立即执行一次 exec
sys.dbms_job.run(job_id);
-- 删除job exec
sys.dbms_job.remove(job_id);
-- 修改
sys.dbms_job.change(job => job_id;
-- 存储过程 varchar2
what => '存储过程名称;';
-- 下一次执行时间 DATE
next_date => sysdate;
-- 时间间隔 varchar2
interval => 'trunc(sysdate + 1) + (2 * 60) / (24 * 60)');
三、遇到问题
由于数据库默认job_queue_processes为0,所以虽然定时任务启动了,但是依旧未生效
-- 查看job_queue_processes
show parameter job_queue_processes;
-- 设置参数为10
alter system set job_queue_processes = 10;
-- 验证,首先查看下参数是否变化
-- 其中last_date、this_date是否有值
select * from all_jobs;
select * from dba_jobs_running;