达梦数据库作业使用

1.功能简介

利用达梦数据库作业管理工具可以完成定期备份数据库,定期生成数据统计报表等比较固定的日常工作,这些重复任务利用作业能够自动化完成,方便数据库管理员提高工作效率。
DM 的作业系统为用户提供了创建作业,并对作业进行调度执行以完成相应管理任务的功能。作业系统大致包含作业、警报和操作员三部分。用户需要为作业配置步骤和调度。还可以创建警报,当发生警报时,将警报信息通知操作员,以便操作员能够及时做出响应。 通过为作业创建灵活的调度方案可以满足在不同时刻运行作业的要求。

通常作业的管理是由 DBA 来维护,普通用户没有操作作业的权限,为了让普通用户可以创建、配置和调度作业,需要赋予普通用户管理作业权限:ADMIN JOB。
例如,授权 ADMIN JOB 给用户 NORMAL_USER。

GRANT ADMIN JOB TO NORMAL_USER; 

默认 DBA 拥有全部的作业权限;ADMIN JOB 权限可以添加、配置、调度和删除作业等,但没有作业环境初始化SP_INIT_JOB_SYS(1)和作业环境销毁 SP_INIT_JOB_SYS(0)的权限。

2.创建作业环境

要进行作业管理,需要先创建作业环境,即创建一些系统表来存储作业相关的对象、历史记录等信息。
这些系统表有 SYSJOBS、SYSJOBSTEPS、SYSJOBSCHEDULES、SYSMAILINFO、
SYSJOBHISTORIES2、SYSSTEPHISTORIES2、SYSALERTHISTORIES、SYSOPERATORS、
SYSALERTS、SYSALERTNOTIFICATIONS 共十张,均位于SYSJOB 模式下。

3.配置作业管理

过程具体参数可参考达梦数据库相关文档。
1)数据准备:
一张表 MYJOB_TEST,A 列为主键。

DROP TABLE MYJOB_TEST; 
CREATE TABLE MYJOB(
A INT PRIMARY KEY,
B VARCHAR(8188)
);

2)创建作业环境:
生成作业相关系统表。

SP_INIT_JOB_SYS(1); 

3)创建操作员 TOM。
可以通过表 SYSOPERATORS 查看已创建操作员的相关信息。

SP_CREATE_OPERATOR('TOM', 1, 'test_dba@163.com', '\*.\*.\*.\*'); 

4)创建并配置作业
a.创建作业 TEST。可以通过表 SYSJOBS 看到作业相关信息。

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

b.开始配置作业。

SP_JOB_CONFIG_START('TEST'); 

c.为作业增加一个步骤。
向表 MYJOB_TEST 中插入数据,因为 A 列是主键,所以第三条数据 A 列值重复会被报错,错
误码-6602。可以通过表 SYSJOBSTEPS 查看到步骤相关信息。

SP_ADD_JOB_STEP('TEST', 'STEP', 0, 'insert into myjob_test values(1000, ''step 1000'');
insert into myjob_test values(1001, ''step 1001'');
insert into myjob_test values(1001, ''step 1001'');', 1, 2, 0, 0, NULL, 0);

d.为作业增加一个调度。可以通过表 SYSJOBSCHEDULES 查看到调度相关信息。

SP_ADD_JOB_SCHEDULE('TEST', 'SCHEDULE', 1, 1, 1, 0, 0, '13:40:40', NULL, '2021-10-26 13:40:40', NULL, '一个测试调度');

e.提交配置。

SP_JOB_CONFIG_COMMIT('TEST'); 

5) 创建并关联警报
a.创建警报 ALERT1,指定错误码-6602。可以在表 SYSALERTS 中查看到警报的相 关信息。

SP_CREATE_ALERT('ALERT1', 1, 0,12, -6602, 1, 'DDL 警报测试'); 

b.关联警报 ,将警报 ALERT1 发送给关联的操作员 TOM 。 可以在表
SYSALERTNOTIFICATIONS 中查看到警报与操作员的关联信息。

SP_ALERT_ADD_OPERATOR('ALERT1','TOM',1,1); 

4.查看监控结果

1)通过表 SYSJOBHISTORIES2 查看作业的执行情况。

select * from sysjob.SYSJOBHISTORIES2;

LINEID     EXEC_ID     NAME START_TIME          END_TIME            ERRCODE    
---------- ----------- ---- ------------------- ------------------- -----------
           ERRINFO                                                     HAS_NOTIFIED
           ----------------------------------------------------------- ------------
1          991275118   TEST 2021-10-26 13:41:11 2021-10-26 13:41:11 -6602
           [JOBTESTSCHEDULE] Violate unique constraint on [MYJOB_TEST] 0


used time: 0.849(ms). Execute id is 74.

2)通过表 SYSALERTHISTORIES 查看警报发生的历史记录。
例如,当用户插入"INSERT INTO MYJOB VALUES(1000,‘STEP 1000’);"一条语
句时,表 SYSALERTHISTORIES 的查询结果如下:

select * from sysjob.SYSALERTHISTORIES;

LINEID     ID          ALERTNAME EVENT_TYPE  SUB_TYPE    USERNAME DB_NAME OPTIME              OPUSER SCH_NAME
---------- ----------- --------- ----------- ----------- -------- ------- ------------------- ------ --------
           OBJ_NAME                                  OBJ_TYPE GRANTEE_NAME ERRCODE     HAS_NOTIFIED
           ----------------------------------------- -------- ------------ ----------- ------------
1          1           ALERT1    0           0           SYSDBA   DAMENG  2021-10-26 13:45:05        
           Violate unique constraint on [MYJOB_TEST]                       -6602       0


used time: 0.208(ms). Execute id is 85.
<think>好的,我现在需要帮助用户了解如何在达梦数据库中通过作业步骤和调度来执行存储过程。根据用户的问题,我需要结合提供的引用内容,整理出具体的步骤和配置方法。首先,我需要回顾达梦数据库作业调度管理相关的引用内容,特别是创建代理环境、作业步骤、调度设置等。 首先,引用[1]提到达梦数据库的Job作业调度管理可以通过黑屏操作和图形化操作两种方式。用户可能需要两种方法的指导,但问题中没有明确说明,所以可能需要涵盖两种方式,或者询问用户偏好。不过用户的问题比较具体,直接要求步骤和配置,因此我应该详细说明两种方法,或者选择其中一种更常用的。通常图形化界面更直观,但命令行可能更适合自动化或熟悉命令的用户。需要根据引用中的信息来判断哪种方法更合适。 引用[3]提到增加作业步骤的细节,包括作业名、步骤名、TYPE执行sql、命令,以及成功或失败后的动作。这些信息对配置执行存储过程的步骤非常重要。因为存储过程的执行属于SQL类型,所以需要设置TYPE为执行SQL,并在命令中调用存储过程。同时,成功和失败后的动作也需要配置,比如结束作业或重试。 引用[2]提供了删除作业步骤的系统过程,这可能暂时用不上,但说明作业步骤的管理包括创建和删除,用户的问题集中在创建和配置,所以重点在创建步骤。 引用[4]关于备份失败的问题,可能和作业调度中的错误处理有关,但用户的问题是关于执行存储过程,所以可能需要提醒用户确保存储过程正确,避免执行失败,或者在作业步骤中设置失败后的处理,比如重试或记录日志。 接下来,我需要组织步骤: 1. 创建代理环境:根据引用[1],创建代理环境是作业调度的前提,无论是黑屏还是图形化操作都需要这一步。可能涉及启用代理和创建系统代理用户。 2. 创建作业作业需要名称,类型可能包括作业步骤和调度时间。引用[3]提到作业步骤中需要指定执行SQL,所以步骤里要调用存储过程的SQL语句,比如CALL procedure_name();。 3. 配置作业步骤:根据引用[3],作业步骤需要设置步骤名、类型(执行SQL)、具体的SQL命令(即调用存储过程),以及成功或失败后的动作,例如SUCC_ACTION设置为结束作业,FAIL_ACTION可能设置重试次数和间隔。 4. 设置调度计划:需要定义作业的执行时间,比如每天定时执行或周期性执行。引用中没有详细说明调度设置的语法,但可能需要使用类似CRON表达式的方式,或者通过界面设置时间。 5. 提交并启用作业:完成配置后需要提交作业,使其生效。 对于黑屏操作(命令行),可能需要使用系统存储过程来创建作业作业步骤和调度。例如,SP_CREATE_JOB创建作业,SP_JOB_STEP_ADD添加步骤,SP_ADD_JOB_SCHEDULE设置调度。具体的参数需要参考引用中的示例,如引用[3]中的例子。 图形化操作可能通过管理工具,如DM管理工具,在界面中填写作业名称、步骤、调度计划等信息,更加直观。 此外,需要提醒用户关于权限问题,执行作业的用户需要有执行存储过程的权限,以及代理环境的正确配置。 可能还需要考虑日志查看和作业监控,引用[1]提到查看作业和日志的方法,用户可能需要知道如何验证作业是否成功执行。 最后,生成相关问题,可能涉及如何监控作业执行、如何处理失败情况、如何优化作业调度性能等。</think>### 达梦数据库通过作业调度执行存储过程的配置步骤 在达梦数据库中,通过作业调度执行存储过程需配置**代理环境**、**作业步骤**和**调度计划**,具体步骤如下: --- #### **1. 创建代理环境(必需)** - **黑屏操作** 使用系统存储过程启用代理环境: ```sql SP_INIT_JOB_SYS(1); -- 初始化作业系统 CREATE SYSAUX_USER 'JOB_USER' IDENTIFIED BY '密码'; -- 创建代理用户[^1] ``` - **图形化操作** 通过DM管理工具,右键“作业”菜单选择“创建代理环境”,按向导完成配置[^1]。 --- #### **2. 创建作业并定义步骤** - **通过黑屏命令** 使用系统存储过程分步配置: ```sql -- 创建作业 SP_CREATE_JOB('JOB_NAME', '作业描述', 0, 0, NULL, NULL); -- 0表示禁用邮件通知 -- 添加作业步骤(执行存储过程) SP_JOB_STEP_ADD('JOB_NAME', 'STEP1', 0, 'CALL YOUR_PROCEDURE();', -- 替换为实际存储过程名 0, 1, 1, 0, NULL, 0); -- 失败重试1次,间隔1秒[^3] -- 设置调度计划(每日执行) SP_ADD_JOB_SCHEDULE('JOB_NAME', 'SCHEDULE1', 0, 0, '每天', NULL, '00:00:00', NULL, '2024-01-01 00:00:00', NULL); -- 每日0点执行[^3] ``` - **通过图形化界面** 1. 右键“作业”选择“新建作业” 2. 在“步骤”标签页添加步骤: - **类型**:选择“执行SQL” - **命令**:填写`CALL 存储过程名();` - **失败策略**:设置重试次数与间隔[^3] 3. 在“调度”标签页设置触发时间(如周期或单次)。 --- #### **3. 提交并启用作业** - 黑屏操作需调用`SP_START_JOB('JOB_NAME');` - 图形化界面中直接勾选“启用作业”后保存。 --- #### **关键配置说明** - **存储过程权限**:确保代理用户拥有执行存储过程的权限(需提前授权)。 - **日志监控**:通过`SP_QUERY_JOB_STEP('JOB_NAME')`或图形化界面查看执行状态与错误详情[^2][^4]。 - **失败处理**:建议在步骤中配置`FAIL_ACTION`(如重试或记录日志),避免因瞬时错误导致任务中断[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值