oracle手动插入数据,oracle job调用存储过程安插数据比手动执行插入的数据要少很多...

oracle job调用存储过程插入数据比手动执行插入的数据要少很多

本帖最后由 jxjinfocus 于 2013-01-14 12:37:31 编辑

oracle JOB 调用存储过程,存储过程查询 昨日数据 进行统计,并将统计结果插入到一张统计表。

此JOB已正常工作数月。

数据库为基于Unix Oracle10.2, 而且是两台数据库服务器,就是若坏了其中任意一台后,另一台ORACLE服务器仍然可以正常工作。后来有一台ORACLE服务器坏了,似乎是坏了一台以后,很多JOB就工作不正常了。

JOB仍然可以正常运行,在JOB的日志中可以查询到JOB均正常完成。但是统计数据却少了很多。只入库了几条至几十条统计数据;但是手动执行存储过程却可以入库几百条统计数据。数据丢失严重。

后修改存储过程,详细记录运行日志,参数值等,均显示无任何异常,可JOB在凌晨5点执行后,统计数据却只有几条至几十条。用那些参数来手动查询或者手动执行存储过程的话 都是有几百条统计数据。

JOB也重建了,也改用dbms_scheduler 来建JOB了。所有能想到的测试方法 都已试过了,均显示正常,找不到任何异常。可偏偏JOB调用存储过程在凌晨执行的话,只产生几条到几十条数据在统计中间表中……

只剩下我没有在凌晨5点进行手动测试了……

Job:

BEGIN

SYS.DBMS_SCHEDULER.DROP_JOB

(job_name  => 'EMP.JOB_STPOLLUTANTSTATSOURCE');

END;

/

BEGIN

SYS.DBMS_SCHEDULER.CREATE_JOB

(

job_name        => 'EMP.JOB_STPOLLUTANTSTATSOURCE'

,start_date      => TO_TIMESTAMP_TZ('2013/01/09 05:00:00.000000 +08:00','yyyy/mm/dd hh24:mi:ss.ff tzr')

,repeat_interval => 'Freq=Daily;Interval=1;ByHour=5'

,end_date        => NULL

,job_class       => 'DEFAULT_JOB_CLASS'

,job_type        => 'STORED_PROCEDURE'

,job_action      => 'P_ST_POLLUTANT_STAT_SOURCE_2'

,comments        => '污染物日数据统计源统计,缓存数据到表ST_POLLUTANT_STATISTIC_SOURCE'

);

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name      => 'EMP.JOB_STPOLLUTANTSTATSOURCE'

,attribute => 'RESTARTABLE'

,value     => FALSE);

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name      => 'EMP.JOB_STPOLLUTANTSTATSOURCE'

,attribute => 'LOGGING_LEVEL'

,value     => SYS.DBMS_SCHEDULER.LOGGING_RUNS);

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL

( name      => 'EMP.JOB_STPOLLUTANTSTATSOURCE'

,attribute => 'MAX_FAILURES');

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL

( name      => 'EMP.JOB_STPOLLUTANTSTATSOURCE'

,attribute => 'MAX_RUNS');

BEGIN

SYS.DBMS_SCHEDULER.SET_ATTRIBUTE

( name      => 'EMP.JOB_STPOLLUTANTSTATSOURCE'

,attribute => 'STOP_ON_WINDOW_CLOSE'

,value     => FALSE);

EXCEPTION

-- could fail if program is of type EXECUTABLE...

WHEN OTHERS THEN

NULL;

END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值