DM数据库作业操作(命令行)
一、创建作业
创建作业通过系统SP_CREATE_JOB函数来实现,语法如下:
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:作业是否开启邮件系统。1:是;0:否。如果开启,那么该作业相关
的一些日志会通过邮件通知操作员;不开启就不会发送邮件。
-
EMAIL_OPTR_NAME:指定操作员名称。如果开启了邮件通知功能,邮件会发送给该操
作员。在创建时系统会检测这个操作员是否存在,如果不存在则报错。
-
EMAIL_TYPE:如果在开启了邮件发送之后,在什么情况下发送邮件。情况分为三种:
0、1、2。0 表示在作业执行成功后发送;1 表示在作业执行失败后发送;2 表示在作业执行
结束后发送
-
ENABLE_NETSEND:作业是否开启网络发送。1:是;0:否。如果开启,那么这个作
业相关的一些日志会通过网络发送通知操作员;如果不开启就不会通知。
-
NETSEND_OPTR_NAME:指定操作员名称。如果开启了网络信息通知功能,则会通过网
络发送来通知该操作员。在创建时系统会检测这个操作员是否存在,如果不存在则报错。
-
NETSEND_TYPE:如果在开启了网络发送之后,在什么情况下发送网络信息。这个情况
也有三种,和上面的 EMAIL_TYPE 是完全一样的
-
DESCRIBE:作业描述信息,最长 500 个字节。
例如:新建一个全备的bakfull作业,为开启状态,不启用邮件通知,无需操作员,无需网络发送,描述为空
call SP_CREATE_JOB('bakfull',1,0,'',0,0,'',0,'');
创建完成这个作业后,系统就会在 SYSJOBS 中插入一条相应的记录,但是这个作业不
会做任何事情,只是一个空的作业,如果需要让它执行,还需要配置这个作业。
二、修改作业
如果DBA发现某一个作业中的信息不合理需要修改,可以调用系统过程SP_ALTER_JOB来实现。
函数 SP_ALTER_JOB 的参数和 SP_CREATE_JOB 的参数完全相同,除了 JOB_NAME 不可修
改外,其他的属性都可修改。对于可修改参数,如果要修改,则指定新值;如果不修改,则
继续指定原值。作业属性修改后,需要重新配置作业,使修改生效。
三、删除作业
如果一个作业已经执行完成,或者由于其它什么原因需要删除作业,可以调用系统过程SP_DROP_JOB 实现。
SP_DROP_JOB (
JOB_NAME VARCHAR(128)
)
例如:删除我们刚才创建的backfull备份作业
SP_DROP_JOB('backfull');
四、配置作业
创建完作业后不能执行操作,原因是我们还未设置作业将要做什么事,还需要对这个作业进行配置。
配置一个作业主要包括以下几个步骤:
-
开始作业配置;
-
指定要开始配置一个作业;
-
为指定的作业增加步骤;
-
为指定的作业增加调度;
-
结束作业配置。
只有在结束作业配置后,这个作业才算配置完成,同时如果这个作业是 ENABLE 状态的,那么它会立即生效。
4.1配置作业
用系统过程 SP_JOB_CONFIG_START 指定对一个作业配置的开始
SP_JOB_CONFIG_START (
JOB_NAME VARCHAR(128)
)
开始作业配置之后到结束作业配置之前这段时间,当前会话会处于作业配置状态。配置状态不允许做任何的创建、修改、删除对象(作业、操作员、警报)的操作。开始作业配置和结束作业配置两个过程配合使用,是为了保证作业配置的完整性。
同时强烈建议:因为作业配置全部都是 DDL 操作,所以在配置过程中建议用户不要做任何 的 COMMIT 操 作 或 者 设 置 DDL 自 动 提 交 ( 例如, 不要设置 dm.ini 文件中DDL_AUTO_COMMIT=1)。否则在配置作业过程中,一旦错误的作业配置 DDL 操作被自动提交,将不能回滚。
在 DM 的作业配置过程中,如果配置出现错误时,可以直接使用 ROLLBACK 将错误的配置回滚到 SP_JOB_CONFIG_START 刚执行的状态,因为在这个过程执行时会自动提交前面所做的操作。所以在配置一个作业开始前,也需要谨慎,需要考虑前面做的操作是否需要提交。
4.2设置作业执行节点
用系统过程 SP_JOB_SET_EP_SEQNO 指定作业执行节点。
SP_JOB_SET_EP_SEQNO (
JOB_NAME VARCHAR(128),
EP_SEQNO INT
)
- JOB_NAME:要配置的作业的名称。执行时会检测这个作业是否存在,如果不存在则报错。
- EP_SEQNO:DSC 集群环境中执行该作业的节点号,取值范围:0~15。
例 设置作业在指定的节点号上执行。
SP_JOB_SET_EP_SEQNO('backfull',2);
4.3增加步骤
增加作业的步骤通过系统过程 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 版本的备份还原(没有 WITHOUT LOG 和 PARALLEL 选项)。
2:表示重组数据库。
3:表示更新数据库的统计信息。
4:表示执行 DTS(数据迁移)。
5:表示执行基于 V1.0 版本的备份还原(有 WITHOUT LOG 和 PARALLEL 选项)。
6:表示执行基于 V2.0 版本的备份还原。
-
COMMAND:
指定不同步骤类型(TYPE)下,步骤在运行时所执行的语句。它不能为空。
当 TYPE=0 时,指定要执行的 SQL 语句或者语句块。如果要指定多条语句,在语句之间
必须用分号隔开。不支持多条 DDL 语句一起执行,否则在执行时可能会报出不可预知的错误
信息。
当 TYPE=1 时,指定的是一个字符串。该字符串由三个部分组成:[备份模式][备份压
缩类型][base_dir,…,base_dir|bakfile_path]。三部分详细介绍如下:
- 第一部分是一个字符,表示备份模式。0:完全备份;1:增量备份。如果第一个字
符不是这二个值中的一个,系统会报错。
-
第二部分是一个字符,表示备份时是否进行压缩。0:不压缩;1:压缩。
-
第三部分是一个文件路径,表示备份文件的路径。路径命令有具体的格式,分以下
两种:
-
对于增量备份,因为它必须要指定一个或者多个基备份路径,每个路径之间需要用逗号隔开,之后接着是备份路径,基备份路径与备份路径需要用“|”隔开,如果不指定备份路径,则不需要指定“|”,同时系统会自动生成一个备份路径。例如,01E:\base_bakdir1, base_bakdir2|bakdir。
-
对于完全备份,因为不需要指定基备份所以就不需要“|”符号了,可以直接在DM8 作业系统使用手册第三个字节开始指定备份路径即可。例如,01E:\bakdir。如果不指定备份路径,则系统会自动生成一个备份路径。
当 TYPE 是 2、3 或 4 时,要执行的语句就是由系统内部根据不同类型生成的不同语句
或者过程。
当 TYPE=5 时,指定的是一个字符串。该字符串由六个部分组成:[备份模式][备份压缩类型 ][ 备 份 日 志 类 型 ][ 备 份 并 行 类 型 ][ 预 留 ][base_dir,…,base_dir |bakfile_path | parallel_file]。六部分详细介绍如下:
- 第一部分是一个字符,表示备份模式。0:完全备份;1:增量备份。如果第一个字
符不是这二个值中的一个,系统会报错。
-
第二部分是一个字符,表示备份时是否进行压缩。0:不压缩;1:压缩。
-
第三部分是一个字符,表示是否备份日志。0:备份;1:不备份。
-
第四部分是一个字符,表示是否并行备份。0:普通备份;1:并行备份,并行备份
映射放到最后,以“|”分割。
-
第五部分是一个保留字符,用 0 填充。
-
第六部分是一个文件路径,表示备份文件的路径。路径命令有具体的格式,分以下
两种:
-
对于增量备份,因为它必须要指定一个或者多个基础备份路径,每个路径之间需要用逗号隔开,之后接着是备份路径,最后并行备份映射文件;并行映射文件,基础备份路径与备份路径需要用“|”隔开,如果不指定备份路径与并行映射文件,则 不 需 要 指 定 “|” ,例如 :01000E:\base_bakdir1, base_bakdir2|bakdir|parallel_file_path 就是一个合法的增量备份命令。
-
对于完全备份,因为不需要指定基备份所以就不需要“|”符号了,可以直接在第三个字节开始指定备份路径即可;例如:01000E:\bakdir。如果不指定备份路径,系统会自动生成备份路径
当 TYPE=6 时,指定的是一个字符串。该字符串由九个部分组成:[备份模式][备份压缩类型][备份日志类型][备份并行数][USE PWR][MAXPIECESIZE][RESV1][RESV2][base_dir,…,base_dir | bakfile_dir]。九部分详细介绍如下:
- 第一部分是一个字符,表示备份模式。0:完全备份;1:差异增量备份;3:归档
备份;4:累计增量备份。如果第一个字符不是这四个值中的一个,系统会报错。DM8 作业系统使用手册
- 第二部分是一个字符,表示备份时是否进行压缩。取值范围为 0~9。0 表示不压缩,
1 表示 1 级压缩,2 表示 2 级压缩,以此类推,9 表示 9 级压缩。
-
第三部分是一个字符,表示是否备份日志。0:备份;1:不备份。
-
第四部分是一个字符,表示并行备份并行数。取值范围 0~9。其中,0 表示不进行
并行备份;1 表示使用并行数默认值 4;2~9 表示并行数。
- 第五部分为一个字符,表示并行备份时,是否使用 USE PWR 优化增量备份。0:不
使用;1:使用。(只是语法支持,没有实际作用)
- 第六部分为一个字符,表示备份片大小的上限(MAXPIECESIZE)。0 表示采用默
认值(32 位系统默认为 2G,64 位系统默认为 4G);1 表示 128M;2 表示 256M;,3 表示
512M;4 表示 1G;5 表示 2G;6 表示 4G;7 表示 8G;8 表示 16G;9 表示 32G。
- 第七部分为一个字符,表示是否在备份完归档后,删除备份的归档文件。0:不删
除;1:删除。
-
第八部分是一个保留字符,用 0 填充。
-
第九部分是一个文件路径,表示备份文件的路径。路径命令有具体的格式,分以下
两种:
- 对于增量备份,因为它必须要指定一个或者多个基础备份路径,每个路径之间需要
用逗号隔开,之后接着是备份路径。基础备份路径与备份路径需要用“|”隔开,例
如,01000000E:\base_bakdir1,base_bakdir2|bakdir 就是一个合法的增
量备份命令。
- 对于完全备份,就不需要“|”符号了,可以直接在第八个字节开始指定备份路
径即可。例如,01000000E:\bakdir。如果不指定备份路径,系统会自动生成一个备
份路径
-
SUCC_ACTION:指定步骤执行成功后,下一步该做什么事。取值范围 0、1、2、3。说明如下:
0:表示不报告步骤执行成功,并结束作业。
1:表示报告步骤执行成功,并结束作业。
2:表示不报告步骤执行成功,并执行下一步。
3:表示报告步骤执行成功,并执行下一步。
SUCC_ACTION 的值用两位二进制数来表示,低位为 0 表示不报告步骤结果,1 表示报
告步骤结果;高位为 0 表示不执行下一步,1 表示执行下一步。
-
FAIL_ACTION:
指定步骤执行失败后,下一步该做什么事。取值范围 0、1、2、3。说明如下:
0:表示不报告步骤执行失败,并结束作业。
1:表示报告步骤执行失败,并结束作业。
2:表示不报告步骤执行失败,并执行下一步。
3:表示报告步骤执行失败,并执行下一步。
FAIL_ACTION 的值用两位二进制数来表示,低位为 0 表示不报告步骤结果,1 表示报
告步骤结果;高位为 0 表示不执行下一步,1 表示执行下一步。
-
RETRY_ATTEMPTS:
表示当步骤执行失败后,需要重试的次数。取值范围 0~100 次。
-
RETRY_INTERVAL:
表示在每两次步骤执行重试之间的间隔时间。不能大于 10 秒钟。
- OUTPUT_FILE_PATH
表示步骤执行时输出文件的路径。该参数已废弃,没有实际意义。
- APPEND_FLAG:
输出文件的追写方式。如果指定输出文件,那么这个参数表示在写入文件时是否从文件
末尾开始追写。1:是;0:否。如果是 0,那么从文件指针当前指向的位置开始追写。
例 下面的语句为作业 backfull 增加了步骤 bak1。
call SP_ADD_JOB_STEP('bakfull', 'bak1', 6, '01020000/dm/dmbak', 0, 0, 0, 0, NULL, 0);
bak1指定是基于 V2.0 版本的备份还原,其COMMAND 参数指定的是完全备份开启1级压缩备份日志并行度为2,不适用PWR备份优化,采用默认备份片大小设置,在备份完不删除归档日志,备份路径为/dm/dmbak,执行成功和失败的下一步动作都是不报告步骤执行结果并结束作业,同时不指定了失败后重试,不指定时间间隔。
4.4修改步骤
修改作业的步骤通过系统过程 SP_ALTER_JOB_STEP 实现,所有参数与 SP_ADD_JOB_STEP 的参数一样。
4.5删除步骤
如 果 用 户 发 现 一 个 作 业 中 的 某 个 步 骤 不 需 要 了 , 可 以 通 过 系 统 过 SP_DROP_JOB_STEP 删除这个步骤。
SP_DROP_JOB_STEP (
JOB_NAME VARCHAR(128),
STEP_NAME VARCHAR(128)
)
SP_DROP_JOB_STEP('bakfull', 'bak1');
4.6增加作业调度
增加调度通过调度系统过程 SP_ADD_JOB_SCHEDULE 实现。
SP_ADD_JOB_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:启用;0:不启用。
-
TYPE:
指定调度类型。取值范围 0、1、2、3、4、5、6、7、8。分别介绍如下:
0:表示指定作业只执行一次。
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 时,表示每几个月的最后一周执行,取值范围没有限制。
达梦数据库社区地址:https://eco.dameng.com