达梦数据库作业使用

本文详细介绍了如何使用达梦数据库的作业管理工具进行定期备份、报表生成和警报设置,包括创建作业环境、配置作业步骤、调度、警报关联及监控。重点展示了如何赋予普通用户作业权限并执行实际操作,以提升数据库管理员效率。

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.
### 达梦数据库作业服务启动失败的解决方案 #### 1. 检查日志文件 数据库的日志文件通常是排查问题的第一步。通过查看日志文件,可以获取到详细的错误信息,从而定位问题的根本原因。达梦数据库的日志文件通常位于`$DAMENG_HOME/log/`目录下,主要包括告警日志(alert_DMSERVER.log)和其他调试日志[^3]。 #### 2. 数据文件权限验证 数据库还原后,数据文件的权限可能会发生改变,这可能导致数据库无法正常启动。使用以下命令检查数据文件的权限和所属用户: ```bash ls -l /path/to/datafile ``` 如果发现数据文件的所属用户或组不正确,可以使用`chown`命令将其修改为正确的用户和组。例如: ```bash chown dmdba:dinstall /path/to/datafile ``` #### 3. 配置文件校验 达梦数据库的核心配置文件是`dm.ini`,其中定义了数据库的各项参数。以下是几个常见需要检查的内容: - **路径设置**:确保所有路径指向实际存在的位置。 - **端口配置**:确认监听端口未被占用。 - **内存分配**:合理调整内存大小以匹配服务器性能。 对于归档日志配置,需特别注意其路径是否存在以及是否有足够的存储空间。任何配置项的错误都可能导致数据库初始化失败[^3]。 #### 4. 实例状态检测 利用命令行工具或者图形化界面监控当前数据库实例的状态。假如实例处于异常终止状态,则先尝试停止再重新开启它。具体操作如下所示: ```bash ./DmServiceDMSERVER stop && ./DmServiceDMSERVER start ``` 若仍然报错,则依据返回的具体提示继续深入分析[^2]。 #### 5. 资源与环境评估 除了软件层面的因素外,还需关注物理资源状况。比如硬盘剩余容量不足会影响写入动作;内存过低则会触发交换机制进而拖慢整个进程速度甚至崩溃。另外也要核查操作系统版本是否兼容最新版DM Server程序需求[^3]。 #### 6. 技术支持求助 经过上述步骤仍未能有效恢复的话,最后的办法就是收集完整的现场资料提交给官方客服团队请求协助诊断处理。 ```python def check_database_status(): import subprocess try: result = subprocess.run(['./DmServiceDMSERVER', 'status'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True) if "OK" in result.stdout: print("Database service is running.") else: print(f"Error occurred: {result.stderr}") except Exception as e: print(f"An exception happened while checking status: {e}") check_database_status() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值