Oracle定时器

创建一个定时器

DECLARE   
	DEAL_SHARES_FRIDAY NUMBER;
BEGIN   
	DBMS_JOB.SUBMIT( JOB      	 	=> DEAL_SHARES_FRIDAY,  
                 	 WHAT      		=> 'calculate_shares_friday;', 
                  	 NEXT_DATE		=> SYSDATE,
                   	 INTERVAL  		=> 'next_day(trunc(sysdate),6)+18/24');
 END;

1、DEAL_SHARES_FRIDAY NUMBER;
随意声明,定时器job的ID,类型为NUMBER,创建时系统自动生成
2、WHAT => ‘calculate_shares_friday;’
这个定时器是干啥的,这里是调用一个名叫calculate_shares_friday的存储过程,注意存储过程名后的‘;’不能少。
3、NEXT_DATE => SYSDATE,
定时器的下次执行时间,SYSDATE意为立刻执行
4、 INTERVAL => ‘next_day(trunc(sysdate),6)+18/24’);
定时器执行一次后,隔多久执行下一次,上面意为每周五的18点执行一次

查询所有的定时器

SELECT * FROM USER_JOBS;

关键字段:
last_date 上次执行开始时间
this_date 有值说明这个定时器正在执行,值为这个定时器开始执行的时间
next_date 下次执行时间
total_time 上次定时器执行完成花费的时间
broken 定时器执行标志 N意为可正常执行 Y意为定时器不再执行
interval 执行间隔
failures定时器执行失败次数
what 定时器要执行的存储过程名称

如果定时器没有按时执行
一般情况,定时器只要创建成功,都会按照定的时间自动执行,有些特殊情况下会遇到不执行的情况:
1、数据库系统时间不对
2、数据库的时区设置不对
系统时间问题容易发现,关键是时区,将近一个月没有查出导致定时器没有按时执行的原因。
SELECT DBTIMEZONE, SESSIONTIMEZONE FROM DUAL;
查询结果应该是+08:00
针对定时器的基本操作
删除操作:

begin
  dbms_job.remove(83);  /*删除自动执行的job,参数是 job的id*/
  commit;
end;

暂停操作:

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

恢复运行操作:

begin
 dbms_job.run(jobId);/*jobId, job的ID*/
end;

删除操作:

begin
 dbms_job.remove(jobId);/*jobId, job的ID*/
end;

修改操作:

/*修改执行间隔*/
begin
  dbms_job.interval(job,interval);  /*job  job的ID,interval: 计算下一次任务执行的时间表达式*/
  commit;
end;
/*修改下次执行时间*/
begin
   dbms_job.next_date(job,next_date); /*job: job 的ID;nex_date:要修改后的计算下一次执行的时间表达式*/
   commit;
end;
/*修改要执行的任务*/
begin
    dbms_job.what('calculate_shares_friday_b;');   /*calculate_shares_friday_b; 要更改的新操作名称*/
  commit;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值