创建JOB如下,但在跑起来后却出错,经过反复创建JOB,JOBNO已经从1累加到5了,但是老是提示无法执行1的作业,不知道什么意思,而且此存储过程和脚本在我本地和同事的机子上创建了N次都没有问题,在服务器上创建却出现问题,大家有知道的说一下,谢谢!
SQL> --创建JOB  
SQL> variable auto_send_mess number;
SQL> begin
  2  dbms_job.submit(:auto_send_mess,'pro_hmcb;',sysdate,'sysdate+1');--每天
  3  end;
  4  /PL/SQL procedure successfully completed
auto_send_mess
---------
5SQL> 
SQL> begin
  2  dbms_job.run(:auto_send_mess);
  3  end;
  4  /begin
dbms_job.run(:auto_send_mess);
end;ORA-12011: 无法执行 1 作业
ORA-06512: 在"SYS.DBMS_IJOB", line 406
ORA-06512: 在"SYS.DBMS_JOB", line 272
ORA-06512: 在line 2
auto_send_mess
---------
5

解决方案 »

  1.   

    submit之后job就已经在运行了。好像不需要再显式的run吧?
    另外你的存储过程里面是不是对表加锁了?可能是资源冲突导致的存储过程出错了
      

  2.   

    SQL> CREATE OR REPLACE PROCEDURE pro_hmcb IS
      2  BEGIN
      3    NULL;
      4  END pro_hmcb;
      5  /过程已创建。SQL> variable auto_send_mess number
    SQL> begin
      2     dbms_job.submit(:auto_send_mess,'pro_hmcb;',sysdate,'sysdate+1');
      3  end;
      4  /PL/SQL 过程已成功完成。SQL> print :auto_send_messAUTO_SEND_MESS
    --------------
               162SQL> begin
      2     dbms_job.run(:auto_send_mess);
      3  end;
      4  /PL/SQL 过程已成功完成。SQL>
      

  3.   

    调试之,编译通过!=执行无异常。
    若你未在存储过程中捕捉并处理该异常,异常就向上,返回到调用过程的JOB中。于是,ORACLE通过JOB抛出该异常。
      

  4.   

    不要执行JOB,手动单调你的存储过程,看有没有进入异常