计划的作业未启动

Posted

技术标签:

【中文标题】计划的作业未启动【英文标题】:scheduled job is not launching 【发布时间】:2012-07-27 06:35:26 【问题描述】:

我想从明天 04:15 开始每两小时启动一个预定的作业。这项工作应该每天启动,每两小时启动一次。像在:04:15, 06:15, 08:15....

该过程是关于在远程机器上创建文件。当我测试该程序时,它工作得很好,并在远程位置创建文件。但是,它作为 dbms_jobs 包中的作业失败。我不确定我做错了什么。下面是程序代码:

CREATE OR REPLACE PROCEDURE ARC_HRVR.VR_AD_INTEGRATION_EXPORT AS
    v_file UTL_FILE.file_type;
BEGIN
    v_file := UTL_FILE.fopen('DIR_VR_AD_INTEGRATION', 'HRMtoAD1_'||to_char(sysdate,'YYYYMMDD')||'_'||to_char(sysdate,'HH24MISS'), 'w', 32767);
    FOR x IN (
    SELECT * FROM (SELECT
                   decode(pid, NULL, RPAD(' ',7,' '), RPAD(user_id, 7, ' '))|| '' ||
                   decode(o365, NULL, RPAD(' ',80,' '), RPAD(o365, 80, ' '))
                   str FROM table WHERE integrated = 'N') str WHERE rownum <= 1000 ORDER BY rownum)
   ´LOOP
    BEGIN
        UTL_FILE.put_line(v_file, x.str);
    END;
END LOOP;
UTL_FILE.fflush(v_file);
UTL_FILE.fclose(v_file);
END VR_AD_INTEGRATION_EXPORT;

这是启动作业的代码:

  DECLARE
   l_id binary_integer;
   begin
   dbms_job.submit(job => l_id, what => 'ARC_HRVR.vr_ad_integration_export();', interval => 'TRUNC(SYSDATE)+1+4.25/24', );

   dbms_output.put_line(l_id);    
end; 

一些指导和调整将修复我的代码 :-) 提前致谢

【问题讨论】:

您的dbms_job.submit 通话以, ); 结束。那肯定是错的。是复制粘贴错误吗? 是的,这是复制粘贴错误...在与客户公司的 DBA 交谈后,现在工作正常 无关,但它的价值:你真的不需要在 utl_file.put_line 过程周围的循环内额外的BEGIN ... END 如果解决了请关闭 【参考方案1】:

您是作为过程所有者 (ARC_HRVR) 还是作为有权执行代码的用户来完成这项工作的?

您是否尝试过在执行块中包围“什么”?

begin ARC_HRVR.vr_ad_integration_export(); end;

工作正在启动,对吧?您在 dba_jobs 等视图中看到 next_date 正在更新吗?

【讨论】:

是的,它工作得很好,我又检查了一遍。显然,有一些拨款问题,DBA 修复了它。现在工作完美无缺:-)【参考方案2】:

你可以参考这个例子

BEGIN
  DBMS_SCHEDULER.create_job (
    job_name        => 'test_full_job_definition',
    job_type        => 'PLSQL_BLOCK',
    job_action      => 'BEGIN my_job_procedure; END;',
    start_date      => SYSTIMESTAMP,
    repeat_interval => 'freq=hourly; byminute=0; bysecond=0;',
    end_date        => NULL,
    enabled         => TRUE,
    comments        => 'Job defined entirely by the CREATE JOB procedure.');
END;
/

更多详情请通过Scheduler

【讨论】:

以上是关于计划的作业未启动的主要内容,如果未能解决你的问题,请参考以下文章

Centos进程作业管理与计划任务

20160316作业

Spring Batch 从相同的执行和步骤重新启动未完成的作业

由于令牌在 24 小时后无法在缓存中找到,Spark Launcher 作业未启动

如何让 JobRunr 在 Spring 控制器/服务中检测我计划的后台作业?

20160316作业