请教一个问题

[复制链接]
查看11 | 回复6 | 2013-10-12 11:06:54 | 显示全部楼层 |阅读模式
问题描述:用oracle的dbms_job调用存储过程p1(sysdate-20/24/60,sysdate-10/24/60),间隔10分钟。
现在遇到一个问题,p1在执行7:00:00 到7:10:00 这段数据用了20分钟,那么下次调用p1的时候执行的就是7:20:00-7:30:00这段时间的数据,中间就有10分钟没计算。请问,除了dbms_job,用PLSQL实现P1执行完7:00:00 到7:10:00 这段数据不管用了多久,下次能自动去执行7:10:00 到7:20:00 这段数据吗?

回复

使用道具 举报

千问 | 2013-10-12 11:06:54 | 显示全部楼层
可以建一个中间表,保存上次执行所处理的数据的结束时间。下次调用时,从该中间表中获取该值做为数据处理范围的启始时间。
回复

使用道具 举报

千问 | 2013-10-12 11:06:54 | 显示全部楼层
嗯,就不用sysdate,直接从记录的值那里赋值,同意楼上
回复

使用道具 举报

千问 | 2013-10-12 11:06:54 | 显示全部楼层
bfc99 发表于 2015-7-2 15:24
可以建一个中间表,保存上次执行所处理的数据的结束时间。下次调用时,从该中间表中获取该值做为数据处理范 ...

谢谢99,我是用中间表记录开始,结束时间并对应一个id,不过是用java去跑的。开始不知道怎么用plsql去实现


回复

使用道具 举报

千问 | 2013-10-12 11:06:54 | 显示全部楼层
如果第1个作业没完,第2个是等它完,还是自己开始
回复

使用道具 举报

千问 | 2013-10-12 11:06:54 | 显示全部楼层
〇〇 发表于 2015-7-5 09:12
如果第1个作业没完,第2个是等它完,还是自己开始

第一个执行完了,第二个才能开始。
回复

使用道具 举报

千问 | 2013-10-12 11:06:54 | 显示全部楼层
同一时间段内可处理的作业小于产生的数据量,要么考虑提升硬件或提升软件性能,要么考虑改变业务,增加处理时间,要么使用并行方式处理——如果cpu等资源有富余的话
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行