【问题标题】:Creating a Job in Oracle using DBMS_JOB使用 DBMS_JOB 在 Oracle 中创建作业
【发布时间】:2012-05-10 16:29:15
【问题描述】:

我正在尝试创建一个将在每个圣诞节运行特定程序的工作。这是我已经走了多远:

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25', 'MM/DD'),
                    'sysdate + ?');
end;
/

但是我似乎无法找到一种简单的方法来将时间间隔更改为每年,并且通常对如何进行此操作感到很困惑,非常感谢任何帮助

【问题讨论】:

  • 不能添加到ALL_JOBS表吗?
  • @gdoron:如果您有 sysdba 角色,您也许可以这样做,但您不应该这样做。您永远不应该直接修改系统目录。
  • @Allan。谢谢你的提示。 (现在我明白为什么我很久以前尝试这样做时出错了...... {两天前})你如何删除工作?
  • @Allan。不应该直接更改ALL_JOBS 的原因是什么?它会导致什么?
  • @gdoron:您不要更改它,因为它是数据字典的一部分。引用 Oracle 的话,“更改或操作数据字典表中的数据可能会对数据库的操作产生永久性的不利影响。”最明显的后果是您几乎肯定会取消整个实例获得 Oracle 支持的资格。除此之外,我不知道会发生什么,也没有特别想知道的动力。

标签: sql oracle dbms-job


【解决方案1】:

你会想要类似的东西

declare
   jobno number;
begin
   dbms_job.submit( jobno,
                   'BEGIN GiveCoins; END;',
                    to_date('12/25/2012', 'MM/DD/YYYY'),
                    'add_months(trunc(sysdate),12)');
end;
/

这将在 2012 年圣诞节午夜第一次运行该作业,之后每 12 个月运行一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-31
    • 2020-02-23
    • 1970-01-01
    • 2022-11-23
    • 2014-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多