日期:2014-05-17  浏览次数:20781 次

关于Oracle定时作业的问题
大家好,请教一个问题。
        我在PL/SQL中,建立了一个存储过程。创建了一个‘作业’,对‘存储过程’进行定时执行。
        正常运行了,好几个月。‘作业’每天都会定时执行。但前几天,忽然没反应了,‘作业’不再自动执行。我重新创建其它的‘存储过程’、‘作业’,也是同样的没反应。
        我猜测,是不是Oracle数据库服务器上,停掉了【作业定时执行的服务】?
        因为,我之前接触MS SQL 2000时,是有一项,Agent服务,执行‘定时任务’的。我在网上,找了些相关的资料,但都不知所云。所以在此,向大家求教。谢谢。
        
------最佳解决方案--------------------

--做个试验演示下
SQL> show parameter job;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
job_queue_processes                  integer     1000

SQL> select count(*) from dept1;

  COUNT(*)
----------
        27

SQL> /

  COUNT(*)
----------
        28

SQL> /

  COUNT(*)
----------
        29

SQL>  alter system set job_queue_processes=0  ;

系统已更改。

SQL>  select count(*) from dept1;

  COUNT(*)
----------
        33

SQL> /

  COUNT(*)
----------
        33

SQL> begin
  2  dbms_job.run(49);
  3  commit;
  4  end;
  5  /

PL/SQL 过程已成功完成。

SQL>
SQL> select count(*) from dept1;

  COUNT(*)
----------
        34

SQL> /

  COUNT(*)
----------
        34

SQL> /

  COUNT(*)
----------
        34


------其他解决方案--------------------
手动运行JOB可以?
------其他解决方案--------------------
你在别的机器上试试你的作业是否能正常运行?如果行,则该服务器出现问题,如果不行,则是你的作业有问题.
------其他解决方案--------------------
我在其它电脑上,通过PL/SQL访问,重建‘作业’,也是不能正常执行。可能是数据库服务器那边,暂停了‘作业服务’吧。
---------------------------------
你这边只是客户端?我们公司的也是服务器把作业停了,我的客户端也无法运行job,但我手动运行也没反应。
你看下user_job里面是否有你的这个job
------其他解决方案--------------------
楼上的两位哥们儿,你们好!感谢你们的回复。
   我刚才照【一楼】的思路,试了一下儿。手动,是可以执行【作业】的,调用的‘存储过程’生效了,对应的‘数据表BQ_OYCS’有记录生成(执行‘作业’之前,该表的记录为空)。说明‘作业’是没有问题的。我在其它电脑上,通过PL/SQL访问,重建‘作业’,也是不能正常执行。可能是数据库服务器那边,暂停了‘作业服务’吧。因为对这一块涉猎不深,所以不是很清楚,盼指点,谢谢!
   

   
------其他解决方案--------------------
4楼的【zhuomingwang】,你好。
      不好意思,我没怎么看明白,你的意思。
      是要我用SQL脚本,来验证一下,‘作业Job’能否正常运行吗?
------其他解决方案--------------------