暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【每日一练 099】调度(五)-job chain

原创 李美静 恩墨学院 2021-01-05
1055

1 创建job chain

image.png
链是一个命名的一系列程序,它们为了一个组合的目标而链接在一起。这就是所谓的“依赖调度”。“链的一个例子可能是以下:
先运行程序A,再运行程序B,但只有在程序A和程序B成功完成时才运行程序C,否则运行程序D。
在一个相互依赖的程序链中的每个位置被称为一个步骤。通常,在启动了一组初始链步骤之后,后续步骤的执行取决于前面一个或多个步骤的完成。要创建和使用链,请按顺序完成以下步骤。所有提到的过程都是DBMS_SCHEDULER包的一部分,除非另有说明。

1. 使用CREATE_CHAIN过程创建一个链。链名可以用模式名(例如,myschema.myname)选择性地限定。
2. 定义(一个或多个)链步骤。定义步骤为其提供一个名称,并指定步骤期间发生的事情。每个步骤都可以指向以下其中一个:
一个程序
另一条链(嵌套链)
一个事件
通过调用DEFINE_CHAIN_STEP过程来定义指向程序或嵌套链的步骤。
要定义等待事件发生的步骤,可以使用DEFINE_CHAIN_EVENT_STEP过程。过程参数可以指向事件计划,也可以包括内联队列规范和事件条件。指向事件的步骤将一直等待,直到引发指定的事件。如果发生事件,则该步骤成功完成。
3. 在创建chain对象之后,可以定义chain规则。链规则定义步骤何时运行,并定义步骤之间的依赖关系。每个规则都有一个条件和一个动作:
如果条件的结果为TRUE,则执行操作。条件可以包含SQL WHERE子句中有效的任何语法。条件通常基于前面一个或多个步骤的结果。例如,如果前面两个步骤成功,可能希望运行一个步骤,如果前面两个步骤中的任何一个失败,则运行另一个步骤。
动作指定在触发规则后要执行的操作。
典型的操作是运行指定的步骤。可能的操作包括启动或停止一个步骤。还可以选择结束作业链的执行,返回一个值或步骤名和错误代码。
添加到链中的所有规则一起工作,以定义链的整体行为。当作业开始时以及在每个步骤结束时,将评估所有规则,以查看下一步发生什么操作。使用DEFINE_CHAIN_RULE过程将规则添加到链中。对于想要添加到链中的每个规则,只需调用此过程一次。
4. 启动链包含两个操作:
使用Enable过程启用链。(创建链时总是禁用的,因此可以在任何作业执行链之前向链添加步骤和规则。)启用已经启用的链不会返回错误。
要运行链,必须创建类型为“chain”的作业。作业操作必须引用链名。对于此作业,可以使用基于事件或基于时间的调度。

复制

2 示例:依懒性调度

image.png
考虑批量数据加载期间发生的所有任务和条件。首先,必须有要加载的数据。然后加载数据,观察文件系统,以确保在加载期间不会耗尽空间。数据加载完成后,需要重新构建在更新后的表上定义的索引。然后针对新加载的数据运行报告。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论