打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
oracle定时器解决方法 - MaD]Q[Frog - 博客大巴

oracle定时器解决方法

2008-07-16

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://madfrog.blogbus.com/logs/24837426.html

  

写给自己~~~一直找什么所谓的定时触发器 -_-! 所谓触发器就是特定事件发生了才执行的,和定时是两个概念~~~

 

1、把init.ora中如下两个参数打开
JOB_QUEUE_INTERVAL=60
JOB_QUEUE_PROCESSES=4
job_queue_keep_connections=true
\\位置位于:D:\oracle\admin\orcl\pfile下的init.ora文件内
2、定义job
sql>variable m number;
sql>begin
dbms_job.submit(:m,‘insert into attend (kq_id,user_id,date_time) select kq_id.nextVal,id,sysdate from rs_ygb;’,sysdate,‘sysdate+1’);
commit;
end;
/
PL/SQL 过程已成功完成。
或者已连接。
sql>variable m number;
sql>begin
 dbms_job.submit(:m,‘insert into attend(kq_id,user_id,date_time) select kq_id.nextVal,id,sysdate from rs_ygb a,atten
d b where a.id !=b.user_id and to_char(b.date_time,'yyyy/mm/dd')!=to_char(sysdate,'yyyy/mm/dd');',sysdate,‘sysdate+1’);
commit;
end;
/
3、系统提示执行成功。   Sql> print :n;
4、如上,我们创建了一个每隔4分钟执行一次的任务号为300的任务。可以通过Oracle提供
的数据字典user_jobs察看该任务的执行情况:
  sql> select job,next_date,next_sec,failures,broken from user_jobs;
  执行结果如下:
  job next_date next_sec failures broken
  300 2000/10/10 11:45:15 0 N
  这表示任务号为300的任务,下一次将在2000/10/10 11:45:15执行,此任务的执行失败
记录为0次。注意:当执行job出现错误时,Oracle将其记录在日志里,失败次数每次自动加1
。当执行失败次数达到16时,Oracle就将该job标志为broken。此后,Oracle不再继续执行它
,直到用户调用过程dbms_job.broken,重新设置为not broken,或强制调用dbms_job.run来
  除了以上我们讨论的submit存储过程之外,Oracle还提供了其他许多存储过程来操作任务
。例如:dbms_job.change 、 dbms_job.what、dbms_job.interval可以用来修改提交的任务
。要想删除该任务,只需运行dbms_job.remove(n)即可,其中n为任务号。

5、
一般在执行语句的前面加exec
 删除job:dbms_job.remove(jobno);
修改job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval)
例如:
exec dbms_job.next_date(1,to_date('2006-03-01 00:00:00','yyyy/mm/dd hh24:mi:ss'))
 删除job:dbms_job.remove(jobno);
修改job:dbms_job.what(jobno,what);
修改下次执行时间:dbms_job.next_date(job,next_date);
修改间隔时间:dbms_job.interval(job,interval);
6、

3、常见的时间函数

30分钟:(sysdate+1)/48
1个小时:(sysdate+1)/24
一天:sysdate+1
一个星期: sysdate+7
每个星期五中午:
NEXT_DAY(TRUNC(SYSDATE),'星期五') + 12/24
一个月:add_months(sysdate,1) --可以为正负数
一年:add_months(sysdate,12)
月份加减:select to_char(add_months(sysdate,-1),'yyyymm') from dual;
日期加减:select to_char(sysdate-1,'yyyymmdd') from dual;

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
Oracle job 管理
oracle 系统包dbms
[精华] [轉載]在Oracle中实现定时操作---Job Queue
如何创建Oracle的jobs
创建oracle job
ORACLE JOB 设置
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服