我建立job的语句如下:
begin
  sys.dbms_job.submit(job => :job,
                      what => 'PROCE1;',
                      next_date => to_date('05-06-2007 10:12:32', 'dd-mm-yyyy hh24:mi:ss'),
                      interval => 'SYSDATE+30/1440');
  commit;
end;存储过程里面是很简单的,就是按照条件查出来的记录插入到另外一张表,然后更新状态目前的情况是:JOB正常执行了,但是没有调用存储过程,单独手工执行存储过程的话是可以生成记录的,JOB定时执行不调用存储过程,我写了一些临时表插入记录,也没有插入.另外init.ora里边的job_queue_processes 是10请帮忙处理一下!先谢谢了!

解决方案 »

  1.   

    你是如何确定“JOB正常执行了”,“JOB定时执行不调用存储过程”
      

  2.   

    用PL/DEVELOPER查看JOB显示TOTAL TIME 有数值,FAILURES为0,LAST DATE也显示了上次运行时间
      

  3.   

    proce1中有commit吗?应该可以确定一定是调用了proce1,你可以把存储过程删除或改名,然后等30分钟后再看JOB属性,其中的FAILURES为就不是0了。
      

  4.   

    现在主要的问题是JOB也能执行,手工执行存储过程也能正常提取到数据,存储过程中有COMMIT
    但是就是用JOB调的时候存储过程不能正常执行.
    你上面所说的,哪个肯定报错,找不到存储过程
      

  5.   

    做个sql trace,看看中间发生了什么,再定位问题。
      

  6.   

    能说具体些吗,怎么trace?谢谢!
      

  7.   

    把存储过程的所有内容都注释掉,然后加两句话——往某个表插入一条记录,提交。然后再看看job的执行情况。
      

  8.   

    在循环里,直接向本地数据库insert没有问题,而原来是通过db_link向其它数据库insert
    怀疑问题出现在db_link上,但通过dbms_job.run()执行没有问题。
    还是不知道问题出现在哪?
      

  9.   

    把原来的DB_LINK删了,重新建了一下,为public的,但还是不行
      

  10.   

    没有错误,手工执行一切正常,出现异常后对单条记录进行rollback,
      

  11.   

    手工执行没错,不代表通过job执行就没出错。在存储过程中的异常处理不能简单的rollback,最好记录下具体的出错信息。oracle不会无缘无故的不执行insert,一定是出了错,或者存储过程的逻辑上根本不用执行insert。可以在过程中多加些输出调试信息到某个日志表,并且将任何出错信息也记录在日志表中,然后通过job执行过程,察看日志表,一定能找出头绪的。
      

  12.   

    加入ORACLE的群吧;群号是:19312711
      

  13.   

    问题基本确定,就是执行有DB_LINK的insert语句时发生的异常,
    因为我在该语句前随便insert一个,然后commit;在该语句之后也insert一个,
    前面的insert正常插入,后面的没有执行,
    手工执行过程,通过dbms_job.run()都能执行成功。
      

  14.   

    ORA-12154: TNS: 无法处理服务名
    但手工执行,调试都没有问题
      

  15.   

    tnsping romote database;通不通?
    不通说明你的tnsnames.ora可能远程数据库的连接串有问题;telnet ip 端口
    看看端口通不通?不通,说明端口没有开防火墙
      

  16.   

    tnsping romote database  这个是通的telnet ip 端口
    不加端口可以连,加端口不成
    开不开防火墙有关吗?