oracle多线程存储过程
⑴ 各位大神们,我想在oracle后台执行多个存储过程,请问要怎么做呢
你是需要定时执行吗?你说的后台执行应该就是存储过程自动执行吧:
1、定时执行你可以创建job,可以定时每个多久执行一次存储过程(job中可以执行多个存储过程,只需要使用‘;’隔开);
2、你可以将你所有的存储过程打包(pkg);
⑵ 程序多线程执行同一个 oracle存储过程
当然是并发执行,因为线程就是并发执行的
⑶ oracle定时执行怎么执行多个存储过程
定时执行存储过程,需要在job里定义;而执行多个存储过程,则在job中定义多次即可。
运行环境:oracle 10g
1、定义其中一个job
sql">declare
jobnonumber;
begin
dbms_job.submit(11,
what=>'pro_bdc_bh(
to_char(add_months(trunc(sysdate),-1),''yyyy''),
to_char(add_months(trunc(sysdate),-1),''MM''),
''true''
);',
next_date=>sysdate,
Interval=>'TRUNC(sysdate)+1+2/(24)');
commit;
end;
注意:其中pro_bdc_bh为存储过程名称,TRUNC(sysdate) + 1 +2 / (24)为定义的运行时间为每日凌晨2点。
2、然后定义另外一个job
declare
jobnonumber;
begin
dbms_job.submit(11,
what=>'p_test(
to_char(add_months(trunc(sysdate),-1),''yyyy''),
to_char(add_months(trunc(sysdate),-1),''MM''),
''true''
);',
next_date=>sysdate,
Interval=>'TRUNC(sysdate)+1+2/(24)');
commit;
end;
注意:这次运行的存储过程名为p_test,运行时间同样为每日凌晨2点。
3、创建job完成后,可通过具有创建job的账号查询创建是否成功,语句如下:
select*fromuser_jobs;
⑷ 多线程调用oracle存储过程是否并发执行
对于多线程调用存储过程是没有问题的,但可能存在存储过程所处理的表产生并发冲突,CPU资源占用多通常是磁盘读写多,建议在DB负担重时查一下哪些表被锁,然后对存储过程进行优化。
⑸ 多线程调用oracle存储过程是否并发履行
1对于多线程调用存储过程是没有问题的,但可能存在存储过程所处理的表产生并发冲突,CPU资本占用多平日是磁盘读写多,建议在DB包袱重时查一下哪些表被锁,然后对存储过程进行优化。 查看原帖>>
⑹ Oracle存储过程并发执行,受什么影响
1对于多线程调用存储过程是没有问题的,但可能存在存储过程所处理的表产生并发冲突,CPU资本占用多平日是磁盘读写多,建议在DB包袱重时查一下哪些表被锁,然后对存储过程进行优化。
⑺ 多线程调用oracle存储过程是否并发执行
这个问题非常简单
所谓的oracle存储过程,无非就是把大量的SQL集中在一起加入了变量循环等。
简单地看它就也就是对几个数据库对象的访问。
我们知道oracle数据库对象的访问是有锁机制的,同一时间内
只有一个用户能访问这样的对象,(最底的行级锁)
可以想象如个2个人同时对一个对象的同一个内容进行处理那
是不可能的。
锁只能被一个用户保持,这是规矩
当然这都是oracle 内部机制,如果多线程调用并非完全相同的内容,锁的竞争不是那么明显当然能够提升处理速度的。