DM数据库创建JOB的三种方式(二)

DM作业系统

DM的作业系统为用户提供了创建作业,并对作业进行调度执行以完成相应任务的功能。作业系统大致包含作业、警报和操作员三部分。用户需要为作业配置步骤和调度。还可以创建警报,当发生警报时,将警报信息通知操作员,以便操作员能够及时做出响应。用户通过作业可以实现对数据库的操作,并将作业执行结果以通知的形式反馈到操作员。

本章仅介绍DM作业系统创建JOB作业的方法。

创建DM作业系统

创建DM作业系统可以通过两种方式来实现。一是通过系统过程SP_INIT_JOB_SYS来实现;二是通过图形化客户端MANAGER管理工具实现。两者选其一。

看过上周文章会发现,创建DM作业系统与创建DBMS_JOB系统包是同一个方法。也就是说,创建DM作业系统的同时就创建了DBMS_JOB系统包,或者说如果要使用DBMS_JOB系统包,就需要创建DM作业系统。

DM作业系统使用方法

下面我们使用客户端工具介绍创建DM系

页面提示“创建代理环境成功”,打开模式选项,可以看到数据库模式下面多了SYSJOB模式,该模式属于SY

3.创建作业

以具有ADMIN JOB权限的用户(这里以DMHR为例)登录DM管理工具,左侧“对象导航”窗口右击【代理】->【作业】选项,选择“新建作业”。

①打开新建作业页面,在“常规”页签中,填写作业名(必填)和作业描述(可选)等其他信息。

②点击“作业步骤”页签,选择“添加”,打开新建作业步骤页面,填写步骤名称、步骤类型等信息。

点击“高级”页签,可以配置作业步骤完成后的操作,可以选择执行下一步,也可以选择报告成功或失败,这里保持默认不变,点击【确定】。

③在新建作业页面,点击“作业调度”页签,选择“添加”,打开新建作业调度页面,填写名称、调度类型为反复执行,勾选星期一~周期日的选项,选择执行周期为每隔1小时,点击【确定】。

此时,创建作业的步骤已基本完成,在新建作业页面点击“DDL”页签,可以看到上述步骤的操作语句。点击【确定】,JOB创建完成。

在查看上述的DDL语句时,我们可以把语句保存下来,可以看出创建JOB的完整SQL语句如下。

call SP_CREATE_JOB('JOBTEST1',1,0,'',0,0,'',0,'JOBTEST');call SP_JOB_CONFIG_START('JOBTEST1');call SP_ADD_JOB_STEP('JOBTEST1','JOBSTEP1',0,'p_test_job;',1,2,0,0,NULL,0);call SP_ADD_JOB_SCHEDULE('JOBTEST1','JOBSCHEDULERTEST1',1,2,1,127,60,'00:00:00','23:59:59','2020-04-2410:40:40',NULL,'');call SP_JOB_CONFIG_COMMIT('JOBTEST1');;

其中,在客户端操作时,1,3,4行命令是可看到明显操作动作的,而2,5打开和结束配置没有明显感知,可以理解为后台隐式调用。以上语言可以单独在SQL窗口

SP_CREATE_JOB (JOB_NAME    VARCHAR(128),ENABLED    INT,ENABLE_EMAIL   INT,EMAIL_OPTR_NAME VARCHAR(128),EMAIL_TYPE   INT,ENABLED_NETSEND  INT,NETSEND_OPTR_NAME VARCHAR(128),NETSEND_TYPE   INT,DESCRIBE    VARCHAR(8187))

参数详解

JOB_NAME作业名称。必须是有效的标识符,同时不能是DM关键字。作业不能重名,重名则报错。

ENABLE 作业是否启用。1启用;0不启用。

ENABLE_EMAIL、EMAIL_OPTR_NAME、EMAIL_TYPE这三个参数与邮件发送相关。

ENABLE_EMAIL:作业是否开启邮件系统。1是;0否。如果开启,那么该作业相关的一些日志会通过邮件通知操作员;不开启就不会发送邮件。

EMAIL_OPTR_NAME:指定操作员名称。如果开启了邮件通知功能,邮件会发送给该操作员。在创建时系统会检测这个操作员是否存在,如果不存在则报错。

EMAIL_TYPE:如果在开启了邮件发送之后,在什么情况下发送邮件。情况分为三种:0、1、2。0表示在作业执行成功后发送;1表示在作业执行失败后发送;2表示在作业执行结束后发送。

ENABLE_NETSEND、NETSEND_OPTR_NAME、NETSEND_TYPE这三个参数与网络发送相关,这里不过多介绍。

DESCRIBE 作业描述信息。

SP_CREATE_JOB所创建SP_JOB_CONFIG_START(

JOB_NAME          VARCHAR(128))

参数详解

JOB_NAME要配置的作业的名称。执行时会检测这个作业是否存在,如果不存在则报错。

说明:不支持在设置了DML自动提交(例如,DISQL中设置SETAUTO ON)的会话上配置作业。

开始作业配置之后到结束作业配置之前这段时间,当前会话会处于作业配置状态。配置状态不允许做任何的创建、修改、删除对象(作业、操作员、警报)的操作。开始作业配置和结束作业配置两个过程配合使用,是为了保证作业配置的完整性。

同时强烈建议:因为作业配置全部都是DDL操作,所以在配置过程中建议用户不要做任何的COMMIT操作或者设置DDL自动提交(例如,不要设置dm.ini文件中DDL_AUTO_COMMIT=1)。否则在配置作业过程中,一旦错误的作业配置DDL操作被自动提交,将不能回滚。

在DM的作业配置过程中,如果配置出现错误时,可以直接使用ROLLBACK将错误的配置回滚到SP_JOB_CONFIG_START刚执行的状态,因为在这个过程执行时会自动提交前面所做的操作。所以在配置一个作业开始前,也需要谨慎,需要考虑前面做的操作是否需要提交。SP_AD_JOB_STEP增加作业步骤

增加、删除作业步骤必须是在配置作业开始后才能进行,否则系统会报错。增加作业的步骤通过系统过程SP_ADD_JOB_STEP实现。语法如下:

SP_ADD_JOB_STEP(JOB_NAME  VARCHAR(128),STEP_NAME  VARCHAR(128),TYPE   INT,COMMAND  VARCHAR(8187),SUCC_ACTION INT,FAIL_ACTION INT,RETRY_ATTEMPTS INT,RETRY_INTERVAL INT,OUTPUT_FILE_PATH VARCHAR(256),APPEND_FLAG INT);

参数详解

JOB_NAME 作业的名称。表示正在给哪一个作业增加步骤,这个参数必须为上面调用SP_JOB_CONFIG_START函数时指定的作业名,否则系统会报错,同时系统会检测这个作业是否存在,不存在也会报错。

STEP_NAME 表示增加的步骤名。必须是有效的标识符,同时不能是DM关键字。同一个作业不能有两个同名的步骤,创建时会检测这个步骤是否已经存在,如果存在则报错。

TYPE 步骤的类型。取值0、1、2、3、4、5和6。说明如下:

0表示执行一段SQL语句或者是语句块。

1表示执行基于V1.0版本的备份还原(没有WITHOUTLOG和PARALLEL选项)。

2表示重组数据库。3表示更新数据库的统计信息。

4表示执行DTS(数据迁移)。

5表示执行基于V1.0版本的备份还原(有WITHOUTLOG和PARALLEL选项)。

6表示执行基于V2.0版本的备份还原。

COMMAND指定不同步骤类型(TYPE)下,步骤在运行时所执行的语句。它不能为空。当TYPE=0时,指定要执行的SQL语句或者语句块。如果要指定多条语句,在语句之间必须用分号隔开。不支持多条DDL语句一起执行,否则在执行时可能会报出不可预知的错误信息。其他情形此处略,用户可参考《DM8作业系统使用手册》。

SUCC_ACTION 指定步骤执行成功后,下一步该做什么事。取值0或1。说明如下:0表示执行下一步。1表示报告执行成功,并执行下一步。

FAIL_ACTION 指定步骤执行失败后,下一步该做什么事。取值0或2。说明如下:0表示执行下一步。2表示报告执行失败,并结束作业。

RETRY_ATTEMPTS 表示当步骤执行失败后,需要重试的次数。取值范围0~100次。

RETRY_INTERVAL 表示在每两次步骤执行重试之间的间隔时间。不能大于10秒钟。

OUTPUT_FILE_PATH 表示步骤执行时输出文件的路径。该参数已废弃,没有实际意义。

APPEND_FLAG输出文件的追写方式。如果指定输出文件,那么这个参数表示在写入文件时是否从文件末尾开始追写。1是;0否。如果是0,那么从文件指针当前指向的位置开始追写。

SP_ADD_JOB_SCHEDULE增加调度

增加、删除调度必须是在配置作业开始后才能进行,否则系统会报错,这样处理主要是为了保证作业配置的完整性。增加调度通过调度系统过程SP_ADD_JOB_SCHEDULE实现。语法如下:​​​​​​​

SP_ADD_OB_SCHEDULE(JOB_NAME    VARCHAR(128),SCHEDULE_NAME   VARCHAR(128),ENABLE     INT,  TYPE      INT,FREQ_INTERVAL   INT,FREQ_SUB_INTERVAL  INT,FREQ_MINUTE_INTERVAL INT,STARTTIME    VARCHAR(128),ENDTIME     VARCHAR(128),DURING_START_DATE  VARCHAR(128),DURING_END_DATE   VARCHAR(128),DESCRIBE    VARCHAR(500));

参数详解

JOB_NAME作业名称。指定要给该作业增加调度,这个参数必须是配置作业开始时指定的作业名,否则报错,同时系统还会检测这个作业是否存在,如果不存在也会报错。

SCHEDULE_NAME待创建的调度名称。必须是有效的标识符,同时不能是DM关键字。指定的作业不能创建两个同名的调度,创建时会检测该调度是否已存在,如果存在则报错。

ENABLE 表示调度是否启用,布尔类型。1启用;2按周的频率来执行。

3在一个月的某一天执行。

4在一个月的第一周第几天执行。

5在一个月的第二周的第几天执行。

6在一个月的第三周的第几天执行。

7在一个月的第四周的第几天执行。

8在一个月的最后一周的第几天执行。

当TYPE=0时,其执行时间由下面的参数DURING_START_DATE指定。

FREQ_INTERVAL 与TYPE有关。表示不同调度类型下的发生频率。说明如下:

当TYPE=0时,这个值无效,系统不做检查。

当TYPE=1时,表示每几天执行,取值范围为1~100。

当TYPE=2时,表示的是每几个星期执行,取值范围没有限制。

当TYPE=3时,表示每几个月中的某一天执行,取值范围没有限制。

当TYPE=4时,表示每几个月的第一周执行,取值范围没有限制。

当TYPE=5时,表示每几个月的第二周执行,取值范围没有限制。

当TYPE=6时,表示每几个月的第三周执行,取值范围没有限制。

当TYPE=7时,表示每几个月的第四周执行,取值范围没有限制。

当TYPE=8时,表示每几个月的最后一周执行,取值范围没有限制。

FREQ_SUB_INTERVAL与TYPE和FREQ_INTERVAL有关。表示不同TYPE的执行频率,在FREQ_INTERVAL基础上,继续指定更为精准的频率。说明如下:

当TYPE=0或1时,这个值无效,系统不做检查。

当TYPE=2时,表示的是某一个星期的星期几执行,可以同时选中七天中的任意几天。取值范围1~127。具体如何取值,请用户参考如下规则。因为每周有七天,所以DM数据库系统内部用七位二进制来表示选中的日子。从最低位开始算起,依次表示周日、周一至周五、周六。选中周几,就将该位置1,否则0。例如,选中周二和周六,7位二进制就是1000100,转化成十进制就是68,所以FREQ_SUB_INTERVAL就取值68。

当TYPE=3时,表示将在一个月的第几天执行。取值范围1~31。

当TYPE为4、5、6、7或8时,都表示将在某一周内第几天执行。取值范围1~7,分别表示从周一到周日。

FREQ_MINUTE_INTERVAL 表示一天内每隔多少分钟执行一次。有效值范围1~1440,单位分钟。

STARTTIME 定义作业被调度的起始时间。必须是有效的时间字符串,不可以为空。

ENDTIME 定义作业被调度的结束时间。可以为空。但如果不为空,指定的必须是有效的时间字符串,同时必须要在STARTTIME时间之后。

DESCRIBE 调度描述信息。

SP_JOB_CONFIG_COMMIT提交作业配在配置

完成后,用户需要对前面所做的配置进行提交,表示对作业的配置已经完成,同时将这个作业加入到运行队列,运行的内容包括这个作业下定义的所有步骤的执行内容,执行方式就是根据这个作业下定义的所有的调度定义的方式来执行。

在配置过程中,可以对指定的作业增加、删除任意多个调度、步骤,但不要做提交操作以及自动提交操作,否则可能会出现作业配置不完整的问题。

系统过程SP_JOB_CONFIG_COMMIT实现作业配置提交。语法如下:​​​​​​​

SP_JOB_CONFIG_COMMIT(JOB_NAME          VARCHAR(128))

参数详解

JOB_NAME待结束配置的作业的名称。

调用这个过程时,系统会检测当前会话是否处于作业配置状态,如果不处于配置状态,则系统会报“非法的作业配置操作”的错误。

由上面可以看出,相比较于DM作业系统相关方法的晦涩难懂,客户端工具更方便理解和使用。另外,DBMS_JOB和DBMS_SCHEDULER系统包命令行操作也相对简单,方便命令行方式的记忆和使用。

DM作业系统除创建作业外,还具有通知操作员,创建警报的功能,更多功能请参考《DM8作业系统使用手册》。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值