如何在 oracle 作业调度程序中启用程序?

Posted

技术标签:

【中文标题】如何在 oracle 作业调度程序中启用程序?【英文标题】:How to enable a program in oracle job schedular? 【发布时间】:2016-03-06 08:14:02 【问题描述】:

这是我的代码。当我执行执行时

dbms_scheduler.run_job('daily_update_job_v1'); 

出现以下错误

ORA-27367:程序“.PROG_RESET_LOG_STATUS_V1”与此关联 作业被禁用。

关于以下问题的任何帮助。谢谢

CREATE OR REPLACE PROCEDURE reset_log_status_v1 ( LOG_STATUS  IN   
VARCHAR2) IS
BEGIN
 UPDATE (
      SELECT
            B.LOG_STATUS 

    FROM    LP_QUAT_ISSUE_MST A,
            LP_QUAT_ISSUE_DTL B
    WHERE   A.QUAT_NO = B.QUAT_NO 
    AND     (trunc(A.QUAT_DT) + A.NO_DAY_GIVEN) <= trunc(SYSDATE)
)   
SET LOG_STATUS ='N';
END;

BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM (
program_name      => 'PROG_RESET_LOG_STATUS_V1',
program_action     => 'RESET_LOG_STATUS_V1',
program_type      => 'STORED_PROCEDURE');
END;


BEGIN
DBMS_SCHEDULER.CREATE_SCHEDULE (
 schedule_name   => 'daily_update_v1',
 start_date    => SYSTIMESTAMP,
 repeat_interval  => 'FREQ=DAILY; INTERVAL=1',
 end_date     => SYSTIMESTAMP + INTERVAL '365' day,
 comments     => 'DAILY UPDATE');
END;


BEGIN
DBMS_SCHEDULER.CREATE_JOB (
  job_name     => 'daily_update_job_v1',
  program_name   => 'PROG_RESET_LOG_STATUS_V1',
  schedule_name   => 'daily_update_v1'
  );
END;

execute dbms_scheduler.run_job('daily_update_job_v1');

【问题讨论】:

ENABLE?或者启用它during creation? 你能帮我翻译一下语法吗?谢谢 语法记录在 PL/SQL 包和类型手册中。在那里,参考CREATE JOBenabled 选项,它特别指出 *默认情况下,此属性设置为 FALSE,因此,该作业被创建为禁用。 * 见docs.oracle.com/cd/E11882_01/appdev.112/e40758/… 【参考方案1】:
DBMS_SCHEDULER.ENABLE('PROG_RESET_LOG_STATUS_V1');

【讨论】:

以上是关于如何在 oracle 作业调度程序中启用程序?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle-DBMS 作业调度程序更改开始时间

具有多个频率的 Oracle 调度程序作业

sql oracle作业调度程序日志

如何检查是不是在 Firebase 作业调度程序中安排了作业?

如何取消firebase作业调度程序中的重复作业

我可以安排一个包通过 Oracle 预定的作业运行吗