达梦数据库之作业系统的使用

       创建、修改和删除作业可以通过以下两种方式来实现。一是通过系统过程来实现;二是通过图形化客户端 MANAGER 管理工具实现。这里主要围绕系统过程来实现的内容进行阐述。

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   作业名称

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

ENABLE_EMAIL:作业是否开启邮件系统1:是;0:否  若开启,会把作业相关日志邮件通知操作员

EMAIL_OPTR_NAME:操作员名称

EMAIL_TYPE:在什么情况下发送邮件 0 执行成功后发送;1 执行失败后发送;2 执行结束后发送

ENABLE_NETSEND:作业是否开启网络发送    1:是;0:否

NETSEND_OPTR_NAME: 指定操作员名称

NETSEND_TYPE:在什么情况下发送网络信息   0成功后发送;1 失败后发送;2 结束后发送

DESCRIBE:作业描述信息  最长 500 个字节

eg:创建一个名为 TEST 的作业

SP_CREATE_JOB('TEST', 1, 1, 'TOM', 2, 1, 'TOM', 2, '每一个测试作业');

2、修改作业

系统过程:SP_ALTER_JOB      (修改作业)

语法如下:

SP_ALTER_JOB (

JOB_NAMEVARCHAR(128),

ENABLEDINT,

ENABLE_EMAILINT,

EMAIL_OPTR_NAMEVARCHAR(128),

EMAIL_TYPEINT,

ENABLED_NETSENDINT,

NETSEND_OPTR_NAMEVARCHAR(128),

NETSEND_TYPEINT,

DESCRIBEVARCHAR(500)

)

eg:修改了作业 TEST 的一些信息

SP_ALTER_JOB('TEST', 0, 1, 'DBA', 2, 1, 'DBA', 2, '修改一个作业');

SP_JOB_CONFIG_START('TEST');

SP_JOB_CONFIG_COMMIT('TEST');

系统过程:SP_RENAME_JOB  (修改作业名)

语法如下:

SP_RENAME_JOB (

JOB_NAMEVARCHAR(128),

NEW_NAMEVARCHAR(128)

)

JOB_NAME:作业名称,必须是已经存在的作业名称。

NEW_NAME:新的作业名称,不能与已经存在的作业重名。

eg:将名称为 TEST 的作业修改为 TEST2

SP_RENAME_JOB('TEST', 'TEST2');

系统过程:SP_ENABLE_JOB  (暂停或暂停后重新启用作业)

语法如下:

SP_ENABLE_JOB (

JOB_NAMEVARCHAR(128),

ENABLEDINT

)

JOB_NAME:作业名称

ENABLED:作业是否启用    1:启用;0:不启用

eg:将作业 TEST 暂停

SP_ENABLE_JOB('TEST', 0); 

系统过程:SP_JOB_SET_SCHEMA  (设置作业模式)

语法如下:

SP_JOB_SET_SCHEMA (

JOB_NAMEVARCHAR(128),

SCHEMA_NAMEVARCHAR(128)

)

JOB_NAME:作业名称

SCHEMA_NAME:模式名称    必须为有效的模式

eg:修改作业 TEST 的所属模式为名为 USERS 的有效模式

SP_JOB_SET_SCHEMA('TEST','USERS');

3、删除作业

系统过程:SP_DROP_JOB

语法如下:

SP_DROP_JOB (

JOB_NAME           VARCHAR(128)

)

JOB_NAME:作业名称

eg:删除作业 TEST

SP_DROP_JOB('TEST');

4、配置作业

  1. 开始作业配置;
  2. 指定要开始配置一个作业;
  3. 为指定的作业增加步骤;
  4. 为指定的作业增加调度;
  5. 结束作业配置。

开始作业配置:

SP_JOB_CONFIG_START (

job_name varchar(128)

)

eg:

SP_JOB_CONFIG_START('TEST');

设置作业执行节点:

SP_JOB_SET_EP_SEQNO (

   job_name     varchar(128),

   ep_seqno     int

)

JOB_NAME:要配置的作业的名称

EP_SEQNO:DSC 集群环境中执行该作业的节点号,取值范围 0~15。

eg:设置作业在指定的节点号上执行

SP_JOB_SET_EP_SEQNO('TEST',2);

DPC 环境下,用系统过程 SP_JOB_SET_RAFT_NAME 指定作业执行节点。

SP_JOB_SET_RAFT_NAME (

JOB_NAME           VARCHAR(128),

    RAFT_NAME         VARCHAR(128)

)

JOB_NAME:要配置的作业的名称。

RAFT_NAME:DPC 环境中,实例的 RAFT_NAME  

eg:设置作业在指定的实例 RAFT1 上执行

SP_JOB_SET_RAFT_NAME('TEST',’RAFT1’);

4.1作业步骤

        增加步骤:系统过程 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:作业名称

STEP_NAME:表示增加的步骤名

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 语句或者语句块。

当 TYPE=1 时,指定的是一个字符串。

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~99999。

RETRY_INTERVAL:表示在每两次步骤执行重试之间的间隔时间。取值范围 0~2147483647,单位秒。

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

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

eg:作业 TEST 增加了步骤 STEP1

SP_ADD_JOB_STEP('TEST', 'STEP1', 0, 'insert into myinfo values(1000, ''Hello

World''); ', 0, 0, 2, 1, NULL, 0);

STEP1 指定的是执行 SQL 语句,其 COMMAND 参数指定的是向 MYINFO 表中插入一条记录,执行成功和失败的下一步动作都是不报告步骤执行结果并结束作业,同时指定了失败后只重试两次,时间间隔为 1 秒钟。

    选择执行指定步骤:系统过程 SP_JOB_STEP_SET_NEXT_STEP

SP_JOB_STEP_SET_NEXT_STEP (

JOB_NAMEVARCHAR(128),

STEP_NAMEVARCHAR(128),

SUCC_NEXT_STEP       VARCHAR(128),

FAIL_NEXT_STEP       VARCHAR(128)

)

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

STEP_NAME:步骤名称,表示正在设置的步骤,必须是已经创建好的步骤,若步骤不存在会报错。

SUCC_STEP_NAME:指定步骤执行成功时,下一步骤的名称,必须是已经创建好的步骤或者为 NULL。只有在配置步骤时指定步骤的 SUCC_ACTION 参数为 2 或者 3 时才有效。

FAIL_STEP_NAME:指定步骤执行失败时,下一步骤的名称,必须是已经创建好的步骤或者为 NULL。只有在配置步骤时指定步骤的 FAIL_ACTION 参数为 2 或者 3 时才有效。

   修改步骤:系统过程 SP_ALTER_JOB_STEP

SP_ALTER_JOB_STEP (

JOB_NAMEVARCHAR(128),

STEP_NAMEVARCHAR(128),

TYPEINT,

COMMANDTEXT,

SUCC_ACTIONINT,

FAIL_ACTIONINT,

RETRY_ATTEMPTSINT,

RETRY_INTERVALINT,

OUTPUT_FILE_PATHVARCHAR(256),

APPEND_FLAGINT

)

参数与 SP_ADD_JOB_STEP 的参数一样

作业步骤重命名通过系统过程 SP_RENAME_JOB_STEP 实现。

SP_RENAME_JOB_STEP (

JOB_NAMEVARCHAR(128),

STEP_NAMEVARCHAR(128),

NEW_STEPVARCHAR(128)

)

JOB_NAME:作业名称,必须已经存在的作业名称。

STEP_NAME:步骤名称,必须是已经存在的步骤名称。

NEW_STEP:新的步骤名称,不能和已存在的步骤重名。

删除步骤:系统过程 SP_DROP_JOB_STEP

SP_DROP_JOB_STEP (

job_name varchar(128),

step_name varchar(128)

)

eg:作业 TEST 删除步骤 STEP1

SP_DROP_JOB_STEP('TEST', 'STEP1');

4.2作业调度

增加调度:系统过程 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:表示调度是否启用   1:启用;0:不启用

TYPE:调度类型。取值范围 0、1、2、3、4、5、6、7、8。

0:表示指定作业只执行一次。

1:按天的频率来执行。

2:按周的频率来执行。

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

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

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

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

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

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

FREQ_SUB_INTERVAL:与 TYPE 和 FREQ_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 个字节。

eg:作业 TEST 增加名为 SCHEDULE3 的调度

SP_ADD_JOB_SCHEDULE('TEST', 'SCHEDULE3', 1, 1, 1, 0, 1, CURTIME, '23:59:59',

CURDATE, NULL, '一个测试调度');

eg:支持跨天调度,下面的语句为作业 TEST 增加名为 SCHEDULE4 的跨天调度。

SP_ADD_JOB_SCHEDULE('TEST', 'SCHEDULE4', 1, 1, 1, 0, 1, '23:59:59','1:00:00', CURDATE, NULL, '一个跨天测试调度');

修改调度:SP_ALTER_JOB_SCHEDULE

SP_ALTER_JOB_SCHEDULE (

JOB_NAMEVARCHAR(128),

SCHEDULE_NAMEVARCHAR(128),

ENABLEINT,

TYPEINT,

FREQ_INTERVALINT,

FREQ_SUB_INTERVALINT,

FREQ_MINUTE_INTERVALINT,

STARTTIMEVARCHAR(128),

ENDTIMEVARCHAR(128),

DURING_START_DATEVARCHAR(128),

DURING_END_DATEVARCHAR(128),

DESCRIBEVARCHAR(500)

)

所有参数与 SP_ADD_JOB_SCHEDULE 的参数一样

修改调度名称:SP_RENAME_JOB_SCHEDULE

SP_RENAME_JOB_SCHEDULE (

JOB_NAMEVARCHAR(128),

SCHEDULE_NAMEVARCHAR(128),

NEW_SCHEDULEVARCHAR(128)

)

删除调度:系统过程:SP_DROP_JOB_SCHEDULE

SP_DROP_JOB_SCHEDULE (

job_name varchar(128),

schedule_name varchar(128)

)

eg:删除作业 TEST 中名为 SCHEDULE3 的调度

SP_DROP_JOB_SCHEDULE('TEST', 'SCHEDULE3');

4.3结束作业配置

SP_JOB_CONFIG_COMMIT (

job_name varchar(128)

)

5、查看、清除作业日志记录

查看作业日志记录:

创建的每一个作业信息都存储在作业表 SYSJOBS 中。通过查看表 SYSJOBS,可以看到所有已经创建的作业。

清除作业日志记录:

因为日志记录会不断增加,越来越庞大,所以用户需要及时清理过时的日志。

可以通过系统过程 SP_JOB_CLEAR_HISTORIES 清除作业的日志记录。

SP_JOB_CLEAR_HISTORIES (

JOB_NAME varchar(128)

)

eg:清除迄今为止作业 TEST 的所有日志记录

SP_JOB_CLEAR_HISTORIES ('TEST');

SP_JOB_CLEAR_HISTORIES (

JOB_NAME          VARCHAR(128),

BEFORE_TIME       DATETIME

)

JOB_NAME:待清除日志的作业名。

BEFORE_TIME:删除 BEFORE_TIME 时间之前的日志记录。BEFORE_TIME 若为空,则删除所有时间的作业日志记录。

eg:清除 2022-08-17 00:00:00 之前作业 TEST 的所有日志记录

SP_JOB_CLEAR_HISTORIES ('TEST', '2022-08-17 00:00:00');

6、执行作业

执行作业:SP_DBMS_JOB_RUN

SP_DBMS_JOB_RUN (

  JOB_ID      INTEGER

)

JOB_ID:待运行的作业 ID。可通过查询 SYSJOBS 系统表得到。

eg:立即执行一次 ID 为 1680153662 的作业

SP_DBMS_JOB_RUN(1680153662);

7、停止作业

停止作业:SP_STOP_RUNNING_JOB

SP_STOP_RUNNING_JOB (

JOB_ID        INTEGER

)

JOB_ID待停止运行的作业 ID。可通过查询 SYSJOBS 系统表得到,也可通过查询 V:JOBS_RUNNING 动态视图,获取运行时间较长的作业的 ID。

eg:停止正在运行的 ID 为 1680153662 的作业

SP_STOP_RUNNING_JOB(1680153662);

总结

到这里就完成了对达梦数据库中作业系统使用的介绍,更多相关内容请移步达梦数据库官方地址:

https://eco.dameng.com


😊希望这篇文章对你有所帮助

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值