带有dbms_sscheduler的嵌套链,无法控制步骤的顺序



我们有一个主链,通过3个步骤从源数据库加载表:

  1. 截断本地表
  2. 从源数据库加载表
  3. 将加载的表转换为另一个表

此外,我们在步骤2中创建了一个额外的链,以通过分区列加载该表。然而,当运行主链时,我们得到以下顺序:

Step1 --> Step2--> Step3--> Local Chain's Step1 ,etc

这就是主链的第2步,创建一个新的本地链,将其添加到作业中(创建作业语句),启用作业,然后即使本地链刚刚启动,也保持其程序已完成。我们如何向主链步骤2添加一个条件,使其等待本地链完成?

这是主链:

CHAIN_NAME      STEP_NAME         PROGRAM_OWNER  PROGRAM_NAME
ACCOUNTS_CHAIN  TRUNCATE_ACC       DWH            TRUNCATE_TABLE_ACC
ACCOUNTS_CHAIN  INSERT_ACC         DWH            RUN_INS_IBS_ACC
ACCOUNTS_CHAIN  RUN_FILL_CORE_ACC  DWH            RUN_FILL_CORE_ACC

调度程序作业日志显示:

LOG_ID     OWNER    JOB_NAME            JOB_SUBNAME          STATUS
97442436    DWH   LOAD_ACC_DB                                SUCCEEDED
97442300    DWH   BULK_LOAD_CHAIN_JOB                        SUCCEEDED
97442296    DWH   LOAD_ACC_DB           LOAD_FIL_01099       SUCCEEDED
97442294    DWH   LOAD_ACC_DB           LOAD_FIL_01137       SUCCEEDED
97442292    DWH   LOAD_ACC_DB           LOAD_FIL_01095       SUCCEEDED
97442290    DWH   LOAD_ACC_DB           LOAD_FIL_09055       SUCCEEDED
97442288    DWH   LOAD_ACC_DB           LOAD_FIL_01124       SUCCEEDED
97442286    DWH   LOAD_ACC_DB           LOAD_FIL_01057       SUCCEEDED
97442284    DWH   LOAD_ACC_DB           LOAD_FIL_01173       SUCCEEDED
97442282    DWH   LOAD_ACC_DB           LOAD_FIL_01103       SUCCEEDED
97442280    DWH   BULK_LOAD_CHAIN_JOB   RUN_FILL_CORE_ACC    SUCCEEDED
97442278    DWH   LOAD_ACC_DB           LOAD_FIL_01153       SUCCEEDED
97442276    DWH   LOAD_ACC_DB           LOAD_FIL_01102       SUCCEEDED
97442274    DWH   LOAD_ACC_DB           LOAD_FIL_01143       SUCCEEDED
97442270    DWH   BULK_LOAD_CHAIN_JOB   INSERT_ACC           SUCCEEDED
97442262    DWH   BULK_LOAD_CHAIN_JOB   TRUNCATE_ACC         SUCCEEDED

BULK_LOAD_CHAIN_JOB是调用主链ACCOUNTS_CHAIN的作业
LOAD_ACC_DB是在步骤2中调用本地链的作业。

查找LOAD_ACC_DB的计数是否是检查其完成情况的唯一方法?或者我们在链本身中有任何机制,比如如果有嵌套链,等待子链完成,然后继续下一步?

我似乎对文档中的嵌套链概念有一个令人困惑的理解。我所要做的就是在定义主链第二步时输入本地链名称,而不是程序名称。在链式运行中建立了正确的顺序之后。

最新更新