job执行时间过长导致下次执行时间推迟

maconelxp 2006-02-05 04:51:43
我现在有一个job需要每10分钟执行一次作业,
我是用游标对数据进行循环处理的,因为数据在处理的时候还在不断增加,等这批数据处理完毕,可能需要2,3个小时,这样,在本次作业刚开始执行的时候才加进来的数据,就需要等2,3个小时,也就是这次作业完毕后,才会被处理,这样就造成很大的延迟,不知道有没有什么办法,就算job这次还没有执行完毕,只要下个10分钟到了,就另启动一个线程进行作业。高手请指教
...全文
257 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxking 2006-03-30
  • 打赏
  • 举报
回复
每次都要2~3小时,多少数据量要处理阿?还是优化一下吧。
prcgolf 2006-03-20
  • 打赏
  • 举报
回复
up
开发者开聊 2006-03-20
  • 打赏
  • 举报
回复
关键还是优化你的程序,
缩短job运行的时间
s198127 2006-03-20
  • 打赏
  • 举报
回复
对建立几个JOB分时间调用就行了啊
比如原来的
JOB 开始时间 18:00 间隔时间:10
现在改为

JOB1 开始时间 18:00 间隔时间:60
JOB2 开始时间 18:10 间隔时间:60
JOB3 开始时间 18:20 间隔时间:60
.....


honghulong 2006-02-16
  • 打赏
  • 举报
回复
放到crontab 中 行不?
计划任务?
xingmo007 2006-02-16
  • 打赏
  • 举报
回复
最好修改你的游标语句,如果按照你说的那样,job每次执行需要2-3个小时,那么就算你另起线程插入job执行之后的数据,这些数据还是不会参加游标计算的。你只有把job的时间放长,或者说是重构游标语句
hmsxq 2006-02-15
  • 打赏
  • 举报
回复
把这个JOB1修改成只执行一次,每次进这个JOB1的时候,用PL/SQL在你的任务存储过程中新建一个JOB2,此JOB2中写你想做的操作
job1
procudure1
begin
..............
create job2()
end;

job2
procedure2
begin
create job2(procedure2,.....)
业务操作
end


job1不执行任何任务,只负责首次启动JOB2,JOB2每次执行后,先创建JOBx,然后执行实际业务操作
cenlmmx 2006-02-07
  • 打赏
  • 举报
回复
还在问啊,实在不能缩短执行时间,定时exec dbms_job.broken(:job)来停止job
AndyFunction 2006-02-07
  • 打赏
  • 举报
回复
up
maconelxp 2006-02-05
  • 打赏
  • 举报
回复
up

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧