【问题标题】:oracle job only running manuallyoracle 作业只能手动运行
【发布时间】:2018-11-12 12:47:12
【问题描述】:
PROCEDURE CRIAR_JOB_LIMPA_proc IS
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
    job_name        => 'JOB_LIMPA_TAB',
    job_type        => 'STORED_PROCEDURE',
    job_action      => 'SIIMA_JOB_LIMPA_TAB_pkg' || '.LIMPAR_TAB_proc',
    start_date      => To_Date('12-NOV-2018 11:20 AM', 'dd-mon-yyyy hh:mi AM' AT TIME ZONE 'GMT'),
    repeat_interval => 'FREQ=minutely;interval=3',
     comments             => 'Inserir em tabela backup e apagar na original',
    enabled         => TRUE);
END;

我有这份工作,当我手动执行它时运行良好,但每当我设置开始日期时它就永远不会开始,我尝试设置时区和一切,但它似乎没有帮助。

对可能的问题/修复有任何想法吗?

谢谢

【问题讨论】:

  • 除了 Wernfried 的回答,把它放在一个过程中不会触发工作,它只是编译过程。使用匿名块或执行过程。

标签: sql oracle plsql schedule sql-job


【解决方案1】:

DATE 值不支持任何时区,因此AT TIME ZONE ...TO_DATE 结合使用是无用的。尝试TO_TIMESTAMP_TZ 或使用 TIMESTAMP 文字,例如start_date => TIMESTAMP '2019-11-12 11:20:00 UTC' 或试试start_date => SYSTIMESTAMP

你的实际问题是 start_date,仔细看:

start_date => To_Date('12-NOV-2019 11:20 AM', 'dd-mon-yyyy hh:mi AM' AT TIME ZONE 'GMT')

12-NOV-2019 - 今天是 11 月 12 日-2018,因此您的工作将在一年后开始运行。

如果这次工作还没有开始,请在一年后再问这个问题:-)

我不确定,也许您必须添加分号并尝试PLSQL_BLOCK ratehr 而不是STORED_PROCEDURE,即

job_type => 'PLSQL_BLOCK',
job_action => 'SIIMA_JOB_LIMPA_TAB_pkg.LIMPAR_TAB_proc;'

【讨论】:

  • 我有 2018 年,它不工作,所以这不是问题 :)
  • 但我会尝试你的其他建议:P
  • @Sapo121,尝试在job_action处添加分号。
  • 我尝试过,但如果这是问题,手动运行时它应该不起作用
  • 对,那我假设问题一定和start_date有关
猜你喜欢
  • 2014-12-05
  • 2015-04-27
  • 2016-10-18
  • 2018-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-20
  • 1970-01-01
相关资源
最近更新 更多