【问题标题】:Job scheduling is not working in oracle作业调度在 oracle 中不起作用
【发布时间】:2014-04-28 19:08:25
【问题描述】:

创建的工作如下:

BEGIN
         Dbms_Scheduler.create_job(
            job_name   => 'PROECSS_STATE'
           ,job_type   => 'STORED_PROCEDURE' 
           ,job_action   => 'ARCHIVE_AND_DELETE' -- Procedure Name
           ,start_date   => SYSDATE
           ,repeat_interval => 'freq=DAILY; byhour=13' --Added byhour
           ,enabled   => TRUE
           ,comments   => 'job schedule for archiving process_state');
END; 

当我创建工作时,时间是“21-mrt-2014 12:55:55”

但是检查后什么都没有发生(检查时间是13:05:45)。

程序未按预期运行。

谁能告诉我为什么工作没有被执行?

【问题讨论】:

  • 检查您的程序是否有效。
  • 程序运行良好。
  • 此过程是否接受输入参数?

标签: sql oracle stored-procedures jobs job-scheduling


【解决方案1】:

start_date => SYSDATE 替换为start_date => SYSTIMESTAMP

这只是一些问题上的问题。例如,下面的代码在 Windows 上的 Oracle 12c 上运行 2 个作业,但在 Solaris 上的 11gR2 上只运行第一个作业。

begin
    dbms_scheduler.create_job('TEST_JOB1', 'PLSQL_BLOCK', 'begin null; end;'
        ,start_date => systimestamp, enabled => true);
    dbms_scheduler.create_job('TEST_JOB2', 'PLSQL_BLOCK', 'begin null; end;'
        ,start_date => sysdate     , enabled => true);
end;
/

--Only one job ran (on some platforms).
select * from dba_scheduler_job_run_details where job_name like 'TEST%';

我不知道为什么会这样。如果有人能解释一下,我将不胜感激。

【讨论】:

  • 尝试使用 SYSTIMESTAMP 而不是 SYSDATE。不工作。 @jonearles
  • 哦。你能检查select * from dba_scheduler_jobs where job_name = 'PROECSS_STATE';select * from dba_scheduler_job_run_details where job_name = 'PROECSS_STATE'; 的输出吗?作业是否运行但失败了?
  • 两个表都不存在。因此抛出异常“表/视图不存在”。我想知道这些工作存储在哪里?我什至尝试了“从 user_jobs 中选择 *”,但没有运气。知道作业存储在哪里吗? ..@jonearles
  • 试试all_ 而不是dba_
猜你喜欢
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多