首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Oracle计划执行Oracle计划-作业

通过Oracle计划执行Oracle计划-作业
EN

Stack Overflow用户
提问于 2017-03-24 07:10:01
回答 1查看 381关注 0票数 0

我知道,为了调度数据库表上的任何操作,我必须形成一个调度链,即连接计划(DBMS_SCHEDULER.CREATE_SCHEDULE)和程序(DBMS_SCHEDULER.CREATE_PROGRAM)的作业(作业)。但是,如果我只想通过一个程序和一个链接的任务来完成同样的任务呢?有可能吗?我试过了,当我检查程序日志时,它显示了:

代码语言:javascript
复制
   RUNS      FAILS
======================
    10        10

这意味着作业已经执行了10次(运行间隔为5秒)。而且它也失败了很多次。

以下是有关工作和计划的代码:

代码语言:javascript
复制
PROGRAM-CODE :
=================

BEGIN
SYS.DBMS_SCHEDULER.CREATE_PROGRAM
(
  program_name         => 'HR.INSERT_PROG'
 ,program_type         => 'PLSQL_BLOCK'
 ,program_action       => 'insert into sch_test values (s1.nextval,s2.nextval)'
 ,number_of_arguments  => 0
 ,enabled              => TRUE
 ,comments             => NULL
);
END;


JOB-CODE :
==========

BEGIN
SYS.DBMS_SCHEDULER.CREATE_JOB
(
   job_name        => 'HR.JOB1'
  ,schedule_name   => 'HR.INSERT_SCH'
  ,program_name    => 'HR.INSERT_PROG'
  ,comments        => NULL
);
END;

相关的表永远不会被填充。如果有人能告诉我,我在这里做错了什么?如果没有时间表,就不能做到这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-24 07:30:49

您不需要创建单独的程序和时间表,您可以将所有的内容都放在这样的工作中:

代码语言:javascript
复制
DBMS_SCHEDULER.CREATE_JOB
(
   job_name        => 'HR.JOB1'
  ,start_date      => LOCALTIMETAMP
  ,repeat_interval => 'FREQ=SECONDLY;INTERVAL=5'
  ,end_date        => NULL
  ,job_class       => 'DEFAULT_JOB_CLASS'
  ,job_type        => 'PLSQL_BLOCK'
  ,job_action      => 'insert into sch_test values (s1.nextval,s2.nextval);'
  ,enabled         => TRUE
);

命名计划对象和命名程序对象只有在其中几个在复杂组合和依赖项中运行时才会有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42993461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档