禁用 DBMS_SCHEDULER 队列

Dav*_*tle 4 oracle jobs

尽管进行了大量搜索,但我似乎无法找到解决我们遇到的这个问题的方法。

我们的系统使用户能够在他们继续工作的同时提交某些要在后台运行的进程。这些进程使用 DBMS_SCHEDULER 作为作业提交,我们有几个作业类用于串行和并行处理,具体取决于用户需要执行的作业。

当我们关闭系统进行维护时,我们会停止运行作业并将它们重新输入队列,并禁用所有计划的作业。这对于标准维护窗口来说很好,因为没有我们的系统在线,用户无法提交新作业。维护后,所有工作都重新启用,每个人都很高兴。

然而,有时我们希望能够在系统仍然运行时禁用队列 - 通常是在高峰时间释放一些资源。目前我们唯一能做的就是禁用当前计划的所有作业,但这显然不会阻止人们向队列提交新作业。

有谁知道一种方法

  • 阻止人们进入队列中的工作
  • 强制任何新作业以禁用状态进入队列(首选选项)?

提前谢谢了

Vin*_*rat 5

我现在无法对其进行测试,但我认为您可以通过打开/关闭调度程序窗口来执行此操作:

  1. 首先定义一个窗口DBMS_SCHEDULER.create_window。该窗口可以持续 24 小时并每天重复,以便它始终打开。
  2. 修改您的作业提交,以便他们该窗口下运行(参数schedule_name中的DBMS_SCHEDULER.create_job过程)。
  3. 当您需要输入维护和/或释放资源时,请使用DBMS_SCHEDULER.close_window. 维护完成后,使用DBMS_SCHEDULER.open_window.

窗口关闭时提交的作业应该排队并在窗口打开时稍后运行。