【问题标题】:Add job to scheduler to invoke that job automatically everyday将作业添加到调度程序以每天自动调用该作业
【发布时间】:2023-03-21 02:10:01
【问题描述】:

我创建了一个每天 09:00:00 运行的作业。

下面是我用来创建工作的sn-p:

BEGIN
            Dbms_Scheduler.create_job(
                job_name   => 'PROECSS_STATE_ARCH'
               ,job_type   => 'STORED_PROCEDURE' 
               ,job_action   => 'TEST' -- Procedure Name
               ,start_date   => SYSDATE 9:00:00
               ,repeat_interval => 'freq=DAILY'
               ,enabled   => TRUE
               ,comments   => 'job schedule for archiving process_state');
END; 

这样做的唯一目的是在每天 09:00:00 运行存储过程“TEST”

如何将此作业添加到调度程序以每天自动调用此作业? 谁能告诉我??

【问题讨论】:

  • 不应该是 PROCESS_STATE_ARCH 吗?
  • 是的,作业名称是 process_state_arch。

标签: sql oracle job-scheduling dbms-scheduler


【解决方案1】:

您还需要指定 byhour 才能在每天晚上 9 点运行该作业。

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

要在您的方案上运行它,您需要CREATE JOB 权限。否则,您需要在任何其他特权用户上运行它。在这种情况下,将 job_action 指定为,

job_action   => '<SCHEMA_NAME>.TEST'

要编辑作业,您可以使用 DBMS_SCHEDULER 包中的 SET_ATTRIBUTE 过程。

例如:-

BEGIN
     DBMS_SCHEDULER.SET_ATTRIBUTE (
          name => 'PROECSS_STATE_ARCH',
          attribute => 'repeat_interval',
          value => 'freq=DAILY; byhour=10' --Everyday by 10 AM.
          ); 
END;

【讨论】:

  • 谢谢。如果我执行上面的代码 sn-p,它会每天运行吗?如果我想稍后编辑,此作业将存储在哪里。有什么想法吗?
  • 是的,我没有创建工作的权限。谢谢:)
  • @vkreddy,是的,这将在每天上午 9:00 运行。我添加了一个示例,说明如何在我的答案中编辑创建的工作。
  • 已成功创建作业。但是程序没有执行。请建议@Dba
猜你喜欢
  • 2011-02-11
  • 2015-10-19
  • 2013-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 2011-07-23
  • 1970-01-01
相关资源
最近更新 更多