我现在有个每分钟跑一次得package
每分钟 oracle job会跑package中的一个procudre run_allprocedure run_all
begin
cursor Object_pool
select * from table
where type in ('A','B','')
....
for rec in Object_pool loop
if rec.type = 'A' then
A;
elsif rec.type = 'B' then
B;
...
end loop;
end;run_all中先打开一个cursor,把要处理的内容查询出来后面循环结果集,针对不同type,调用不同procedure A B
刚开始type很少,半分钟就跑完了,随着type的增多,整个package的运行时间越来越多。
还有一个问题就是如果package 某个type出问题了,会影响所有type现在我一方面优化sql,尽量把时间缩短,但是以后type多了,恐怕时间还是会越来越长,最终一分钟跑不完请教是否有别的方法可以重新架构一下,能解决这种问题
还想过一个方法就是把不同type分开来,把一个oracle job分为几个这种会建立很多job,好像也不是十分完美,而且DBA也不一定同意....
我这边结果集中是一条一条处理的不同的procedure的规则是相应的用户提供的
dbms_job.submit('A;B;C',sysdate,'trunc(sysdate+1)');
我想把几个procedure 同时submit到job中procedure A B C等用到了我package中的全局变量及一个临时表不知道这样会不会相互影响