DBMS_JOB 模块

DBMS_JOB 模块提供用于创建、调度和管理作业的过程。

DBMS_JOB 模块提供“管理任务调度程序”(ATS)的替代界面。通过将任务添加至 ATS 创建作业。实际任务名称通过使 DBMS_JOB.TASK_NAME_PREFIX 过程名称与指定作业标识并置构造,如 SAMPLE_JOB_TASK_1,其中 1 是作业标识。

作业运行先前存储在数据库中的存储过程。SUBMIT 过程用于创建和存储作业定义。系统会对每个作业指定作业标识,并且指定其关联存储过程和用于描述作业运行时间和方式的属性。

第一次在数据库中运行 SUBMIT 过程,如果必要,会创建 SYSTOOLSPACE 表空间。

作业的运行时间和频率取决于两个交互参数 - next_dateintervalnext_date 参数是日期时间值,用于指定下次执行作业的日期和时间。interval 参数是字符串,包含求值为日期时间值的日期函数。在执行作业之前,会对 interval 参数中的表达式进行求值,产生的值将替换随作业存储的 next_date 值。然后执行作业。在此方式下,每次执行作业之前会重新对 interval 中的表达式求值,以便提供对应下次执行的 next_date 日期和时间。

next_date 参数指定的那样,已调度作业的第一次运行应设置为在当前时间之后经过至少 5 分钟开始,并且运行每个作业之间的时间间隔应至少为 5 分钟。

此模块的模式为 SYSIBMADM。

DBMS_JOB 模块包括以下内置例程。

表 1. DBMS_JOB 模块中可用的内置例程
例程名称 描述
BROKEN 过程 指定所给定作业是已中断还是未中断。
CHANGE 过程 更改作业的参数。
INTERVAL 过程 通过作业每次运行时重新计算的日期函数来设置执行频率。此值成为下一次执行的日期和时间。
NEXT_DATE 过程 设置下次要运行作业的日期和时间。
REMOVE 过程 从数据库中删除作业定义。
RUN 过程 强制执行作业,即使该作业被标记为中断。
SUBMIT 过程 创建作业并将作业定义存储在数据库中。
WHAT 过程 更改作业运行的存储过程。
表 2. DBMS_JOB 模块中可用的内置常量
常量名称 描述
ANY_INSTANCE DBMS_JOB 例程的实例自变量唯一支持的值。
TASK_NAME_PREFIX 此常量包含字符串,该字符串用作构造管理任务调度程序的任务名称的前缀。

使用说明

通过 DBMS_JOB 模块对每个数据库提交第一个作业时,会执行“管理任务调度程序”设置:
  1. 创建 SYSTOOLSPACE 表空间(如果该表空间不存在);
  2. 创建 ATS 表和视图,如 SYSTOOLS.ADMIN_TASK_LIST。
要列示已调度作业,请运行:
db2 SELECT * FROM systools.admin_task_list
      WHERE name LIKE DBMS_JOB.TASK_NAME_PREFIX || '_%'
要查看作业执行状态,请运行:
db2 SELECT * FROM systools.admin_task_status
      WHERE name LIKE DBMS_JOB.TASK_NAME_PREFIX || '_%'
注: 作业标识的期望值不是 SYSTOOLS.ADMIN_TASK_LIST 返回的 TASKID 的值。例如,您具有以下作业列表:
NAME                    TASKID                                          
---------------         ------                                          
DBMS_JOB_TASK_2              3                                                
DBMS_JOB_TASK_3              4
如果要修改 DBMS_JOB_TASK_2,那么必须传递 2 作为作业标识。