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

Posted

技术标签:

【中文标题】带有 dbms_scheduler 的嵌套链,无法控制步骤的顺序【英文标题】:Nested chains with dbms_scheduler, not able to control order of steps 【发布时间】:2021-12-01 00:15:55 【问题描述】:

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

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

此外,我们在第 2 步中创建了一个附加链,以按分区列加载该表。但是,在运行主链时,我们得到以下顺序:

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

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

这里是主链:

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 是 step2 中调用本地链的作业。

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于带有 dbms_scheduler 的嵌套链,无法控制步骤的顺序的主要内容,如果未能解决你的问题,请参考以下文章

带有 OUT 参数调用的 Oracle DBMS_SCHEDULER.create_job

[LeetCode] Flatten Nested List Iterator 压平嵌套链表迭代器

[LeetCode] Nested List Weight Sum II 嵌套链表权重和之二

猫鼬中的嵌套子模式

我的嵌套子查询和 substr 函数有啥问题

圣诞专场刷完这套链表套题,面试官考链表的时候我笑出了声