达梦数据库--作业
达梦数据库支持通过作业配置实现周期性任务的自动化执行,有效提升工作效率。常见的应用场景包括:定时数据备份、定期清理过期备份文件、周期性统计信息收集等。作业配置既可通过系统存储过程实现,也可使用图形化界面进行操作。系统过程SP_CREATE_JOB:SP_CREATE_JOB ( JOB_NAME VARCHAR(128), ENABLED INT, ENABLE_EMAIL INT, EMAIL_
达梦数据库支持通过作业配置实现周期性任务的自动化执行,有效提升工作效率。常见的应用场景包括:定时数据备份、定期清理过期备份文件、周期性统计信息收集等。作业配置既可通过系统存储过程实现,也可使用图形化界面进行操作。
1 系统过程方式
1.1 创建作业
系统过程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(500)
)
参数解析:
JOB_NAME:作业名。必须是有效的标识符,同时不能是 DM 关键字。作业不能重名,重名则报错。
ENABLED:是否启用作业。0:不启用,1:启用。
ENABLE_EMAIL:作业是否开启邮件系统。0:否,1:是。如果开启,那么该作业相关的一些日志会通过邮件通知操作员;不开启就不会发送邮件。
EMAIL_OPTR_NAME:指定操作员名称。如果开启了邮件通知功能,邮件会发送给该操作员。在创建时系统会检测这个操作员是否存在,如果不存在则报错。
EMAIL_TYPE:如果在开启了邮件发送之后,在什么情况下发送邮件。情况分为三种:0、 1、2。0 表示在作业执行成功后发送;1 表示在作业执行失败后发送;2 表示在作业执行结束后发送。
ENABLE_NETSEND:作业是否开启网络发送。1:是;0:否。
NETSEND_OPTR_NAME:指定操作员名称。
NETSEND_TYPE:跟EMAIL_TYPE 是完全一样的。
DESCRIBE:作业描述信息,最长 500 个字节。
1.2 配置作业
配置作业主要分为以下5个步骤:
1. 开始作业配置;
2. 指定要配置的作业;
3. 为指定的作业增加作业步骤;
4. 为指定的作业增加作业调度;
5. 结束作业配置。
下面通过系统过程的方式逐步实现每一个步骤:
1. 通过SP_JOB_CONFIG_START指定对一个作业开始配置。
SP_JOB_CONFIG_START (
JOB_NAME VARCHAR(128) --作业名,执行时会检测作业名是否存在,不存在报错
)
2. 通过SP_ADD_JOB_STEP增加作业的步骤。
SP_ADD_JOB_STEP (
JOB_NAME VARCHAR(128),
STEP_NAME VARCHAR(128),
TYPE INT,
COMMAND TEXT,
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,6]。
0:表示执行一段 SQL 语句或者是语句块。
1:表示执行基于V1.0版本的备份还原(没有 WITHOUT LOG 和 PARALLEL 选项)。
2:表示重组数据库。
3:表示更新数据库的统计信息。
4:表示执行 DTS(数据迁移)。
5:表示执行基于V1.0版本的备份还原(有 WITHOUT LOG 和 PARALLEL 选项)。
6:表示执行基于V2.0版本的备份还原。
COMMAND:不同TYPE值时,COMMAND所代表的含义不同。当TYPE=6时,COMMAND指定的是一个字符串,该字符串由9部分组成:
第1部分:1个字符,表示备份模式。0:全备;1:差异增量备份;3:归档备份;4:累计增量备份。
第2部分:1个字符,表示备份时是否压缩。取值范围0~9,0表示不压缩,其余数字即为压缩级数。
第3部分:1个字符,表示是否备份日志。0:备份;1:不备份。
第4部分:1个字符,表示并行备份并行数。取值范围 0~9。0 表示不进行并行备份;1 表示使用并行数默认值 4;2~9 表示并行数。
第5部分:1个字符,表示并行备份时,是否使用 USE PWR 优化增量备份。0:不使用;1:使用。(只是语法支持,没有实际作用)
第6部分:1个字符,表示备份片大小的上限。0表示采用默认值(32位系统默认为 2G,64 位系统默认为 4G);1表示128M;2表示256M;3表示512M依次类推下一个数字代表前面备份片大小的2倍。
第7部分:1个字符,表示是否在备份完归档后,删除备份的归档文件。0:不删除;1:删除。
第8部分:1个保留字符,用0填充。
第9部分:文件路径,表示备份文件的存放路径。对于增量备份,必须要指定一个或者多个基础备份路径,每个基础备份路径用逗号隔开,之后接着是备份路径。基础备份路径要与增量备份路径用“|”隔开,例如:11000000/basebak01,basebak02|incre_bak
SUCC_ACTION/FAIL_ACTION:指定步骤执行成功/失败后的响应。取值范围:0,1,2,3
0:表示不报告步骤执行成功/失败,并结束作业。
1:表示报告步骤执行成功/失败,并结束作业。
2:表示不报告步骤执行成功/失败,并执行下一步。
3:表示报告步骤执行成功/失败,并执行下一步。
SUCC_ACTION/FAIL_ACTION的值用两位二进制数来表示,低位为0表示不报告步骤结果,1表示报告步骤结果;高位为0表示不执行下一步,1表示执行下一步。
RETRY_ATTEMPTS:表示当步骤执行失败后,需要重试的次数。取值范围 0~99999。
RETRY_INTERVAL:表示在每两次步骤执行重试之间的间隔时间。取值范围 0~2147483647,单位秒。
OUTPUT_FILE_PATH:表示步骤执行时输出文件的路径。该参数已废弃,没有实际意义。
APPEND_FLAG:输出文件的追写方式。如果指定输出文件,那么这个参数表示在写入文件时是否从文件末尾开始追写。1:是;0:否。如果是 0,那么从文件指针当前指向的位置开始追写。
3. 通过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:调度名称。
ENABLE:调度是否启用。0:不启用,1:启用。
TYPE:指定调度方式。取值范围:0~8。
FREQ_INTERVAL:与 TYPE 有关。表示不同调度类型下的发生频率。
FREQ_SUB_INTERVAL:与 TYPE 和 FREQ_INTERVAL 有关。
FREQ_MINUTE_INTERVAL:表示一天内每隔多少分钟执行一次。有效值范围 0~1439,单位分钟,0 表示一天内执行一次。
STARTTIME:定义作业被调度的起始时间。必须是有效的时间字符串,不可以为空。
ENDTIME:定义作业被调度的结束时间。可以为空。但如果不为空,指定的必须是有效的时间字符串。
DURING_START_DATE :指定作业被调度的起始日期。必须是有效的日期字符串,不可以为空。
DURING_END_DATE:指定作业被调度的结束日期。可以为空,DURING_END_DATE 和 ENDTIME 都为空,调度活动会一直持续下去。但如果不为空,必须是有效的日期字符串,同时必须是在DURING_START_DATE 日期之后。
DESCRIBE:表示调度的注释信息,最大长度为 500 个字节。
1.3 修改作业
1. 通过SP_ALTER_JOB修改作业中的信息,SP_ALTER_JOB中的参数与SP_CREATE_JOB相同。
2. 通过SP_RENAME_JOB对作业进行重命名。
SP_RENAME_JOB (
JOB_NAME VARCHAR(128), --旧的作业名称,必须是已存在的作业名
NEW_NAME VARCHAR(128) --新的作业名称,不能与已存在的作业名重复
)
3. 通过SP_JOB_SET_SCHEMA修改作业所属模式。
SP_JOB_SET_SCHEMA (
JOB_NAME VARCHAR(128), --作业名
SCHEMA_NAME VARCHAR(128) --模式名称,必须是有效的模式名,否则会报错
)
注:只允许DBA或作业拥有者使用SP_ALTER_JOB或SP_RENAME_JOB对作业进行修改;只允许DBA使用SP_JOB_SET_SCHEMA修改作业所属的模式。
1.4 删除作业
通过SP_DROP_JOB删除作业。
SP_DROP_JOB (JOB_NAME VARCHAR(128))
注:只允许 DBA 用户或者作业拥有者使用 SP_DROP_JOB 删除作业。
2 图形化方式
通过manager管理工具,连接数据库,右键“代理”,点击“创建代理环境”:

创建代理环境后,模式中会自动生成SYSJOB,该模式中包含作业系统的系统表:

2.1 创建作业
右键“作业”,点击“新建作业”:

填写作业名和作业描述:

2.2 配置作业
新建作业步骤:
需要填写步骤名称、步骤类型、备份选项,步骤类型选择备份数据库后下方会显示出备份选项的菜单栏,备份选项需要填写备份路径并按照需求对备份策略进行设置:

作业步骤设置完毕后点击“确定”,即可在作业步骤看到:

设置名称、调度类型、发生频率和每日频率,该作业调度策略为每周六23:00执行一次bakall:

作业调度设置完毕后点击“确定”,即可在作业调度看到:

可以通过DDL查看系统过程方式:

点击“确定”,完成JOB1作业的创建:

2.3 修改作业
右键JOB1,选择“修改作业”,即可通过图形化方式对作业配置进行修改(作业名称无法修改):

修改作业步骤bakall,选中bakall点击“编辑”即可进行修改:

修改作业调度schedule01,选中schedule01点击“编辑”即可进行修改:

2.4 删除作业
对需要删除的作业进行右键,点击“删除作业”:

若想要删除所有作业,可以通过“清理代理环境”,点击后代理下所有对象都会被清除,且SYSJOB模式也会消失:

3 案例分析
call sp_init_job_sys(1);
call sp_create_job('bakall_delall',1,0,'',0,0,'',0,'每天23:00全量备份、删除30天前的全量备份');
call sp_job_config_start('bakall_delall');
call sp_add_job_step('bakall_delall', 'bakall', 6, '01020000/dmbak', 3, 1, 0, 0, null, 0);
call sp_add_job_step('bakall_delall', 'delall', 0, 'sf_bakset_backup_dir_add(''disk'',''/dmbak'');
call sp_db_bakset_remove_batch(''disk'',SYSDATE-30);', 1, 1, 0, 0, null, 0);
call sp_add_job_schedule('bakall_delall', 'bakall_delall_time01', 1, 1, 1, 0, 0, '23:00:00', null, '2019-01-01 01:01:01', null, '');
call sp_add_job_schedule('bakall_delall', 'bakall_delall_time02', 1, 0, 0, 0, 0, null, null, SYSDATE()+0.0014, null, '');
call sp_job_config_commit('bakall_delall');
分析:
call sp_init_job_sys(1); 创建作业环境,包括SYSJOB模式、系统表和系统视图。
call sp_create_job('bakall_delall',1,0,'',0,0,'',0,'每天23:00全量备份、删除30天前的全量备份'); 创建作业。参数含义分别为:作业名bakall_delall,启用作业,关闭邮件系统,操作员名称,邮件发送时机,关闭网络发送,操作员名称,网络信息发送时机,作业描述。
call sp_job_config_start('bakall_delall'); 开始作业bakall_delall的配置。
call sp_add_job_step('bakall_delall', 'bakall', 6, '01020000/dmbak', 3, 1, 0, 0, null, 0); 作业bakall_delall的作业步骤。参数含义分别为:作业名bakall_delall;增加的作业步骤名bakall;type=6表示表示执行基于 V2.0 版本的备份还原;'01020000/dmbak'表示备份策略及备份存放路径;3:表示报告步骤执行成功,并执行下一步;1:表示报告步骤执行失败,并结束作业;0表示当步骤执行失败时,需要尝试的次数为0次;0表示每两次步骤执行重试之间的时间间隔为0s;null这个参数已废弃,无实际作用;最后一个参数表示输出文件的追写方式,0表示否。
call sp_add_job_step('bakall_delall', 'delall', 0, 'sf_bakset_backup_dir_add(''disk'',''/dmbak'');
call sp_db_bakset_remove_batch(''disk'',SYSDATE-30);', 1, 1, 0, 0, null, 0); 也是bakall_delall的作业步骤,重点分析第3个参数和第4个参数。第3个参数为type,type=0表示执行一段 SQL 语句或者是语句块;第4个参数则为需要执行的语句块,sf_bakset_backup_dir_add中的参数用于指定备份存放的介质和目录,sp_db_bakset_remove_batch中的参数用于指定介质和时间,表示批量删除30天前的备份。
call sp_add_job_schedule('bakall_delall', 'bakall_delall_time01', 1, 1, 1, 0, 0, '23:00:00', null, '2019-01-01 01:01:01', null, '');前两个参数为作业名和调度名;第3个参数enable=1表示启用该调度;第4个参数type=1,表示按天的频率执行;第5个参数与type值有关,当type=1时该参数等于1表示每天执行;第6个参数当type=1时,该参数等于0或1无效,系统不会做检查;第7个参数表示每天间隔多长时间执行一次,0表示一天内只执行一次;第8个参数为被调度的开始时间;第9个参数为结束时间,null表示没有结束时间;第10个参数指定作业被调度的起始日期;第11个参数指定作业被调度的结束日期;第12个参数为调度的描述信息。
call sp_add_job_schedule('bakall_delall', 'bakall_delall_time02', 1, 0, 0, 0, 0, null, null, SYSDATE()+0.0014, null, ''); 该调度表示在创建作业两分钟后执行一次作业步骤。
call sp_job_config_commit('bakall_delall'); 在配置完成后,用户需要对前面所做的配置进行提交,表示对作业的配置已经完成,同时将这个作业加入到运行队列。注意:需要和sp_job_config_start( )配套使用。
4 实用技巧
如需修改系统过程中作业参数但不确定其具体含义,可通过两种方式操作:一是在Manager工具中执行该作业,通过图形界面直观修改参数;二是查阅《DM8作业系统使用手册》获取参数说明,该手册位于dmdbms/doc目录下。
达梦技术社区 | 达梦数据库: 达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台
更多推荐


所有评论(0)