带有 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 压平嵌套链表迭代器