DMDRS搭建
DMDRS搭建
本次进行DMDRS工具的部署搭建以及使用
环境配置
操作系统及数据库配置
- 操作系统:使用CentOS7
- 数据库:dm8_20240408_x86_rh7_64
服务器配置
| 实例名 | 服务器IP |
|---|---|
| DM1 | 192.168.19.7(源DMDRS) |
| DM2 | 192.168.19.4(目的DMDRS) |
目录配置
| 目录类型 | 源DMDRS数据库 | 目的DMDRS数据库 |
|---|---|---|
| 安装路径 | /home/dmdba/dmdrs5 | /home/dmdba/dmdrs5 |
| 执行程序目录 | /home/dmdba/dmdrs5/bin | /home/dmdba/dmdrs5/bin |
| 配置文件路径 | /home/dmdrs/dmdrs5/bin/cpt.xml | /home/dmdrs/dmdrs5/bin/exec.xml |
| 服务脚本目录 | /home/dmdrs/dmdrs5/bin | /home/dmdrs/dmdrs5/bin |
| console远程控制工具 | /home/dmdrs/dmdrs5/bin/drcsl | /home/dmdrs/dmdrs5/bin/drcsl |
数据库准备工作
开启源数据库的归档和逻辑日志(源端)
-
动态配置(推荐)
-
使用disql登录数据库,执行命令进行归档配置
SQL> alter database mount; SQL> alter database add archivelog 'DEST=/home/dmdba/arch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240'; SQL> alter database archivelog; SQL> alter database open;
-
调用系统过程SP_SET_PARA_VALUE修改RLOG_APPEND_LOGIC参数值
SQL> call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);
-
-
静默配置
-
进入DM数据库的配置文件dm.ini中修改ARCH_INI参数为1,RLOG_APPEND_LOGIC根据情况配置
#configuration file ARCH_INI = 1#redo log RLOG_APPEND_LOGIC = 1 -
在dm.ini同目录下,新建配置文件dmarch.ini,并添加归档配置文件
[ARCHIVE_LOCAL1]ARCH_TYPE = LOCALARCH_DEST = /home/dmdba/archARCH_FILE_SIZE = 512ARCH_SPACE_LIMIT = 10240 -
配置完毕后重启服务器
-
配置DDL同步(源端)
-
辅助表方式(推荐)
-
在源数据库执行
ddl_sql_dm8.sql脚本创建辅助表,脚本默认在DMDRS执行程序目录下的scripts目录中SQL>set define off; SQL>start /home/dmdba/dmdrs5/bin/scripts/ddl_sql_dm8.sql 建议:
这里建议使用manager工具执行脚本,使用disql执行的话很容易出现部分语句报错

-
检查创建的触发器和辅助表是否有效
SQL> select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DRS_$%' and status = 'Y';SQL> select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DRS_$%' and status = 'VALID';
- 出现4个触发器、9个辅助表则表示配置成功
-
-
系统表方法
-
静默配置
-
设置数据库配置文件dm.ini中RLOG_APPEND_LOGIC参数值为1
#redo log RLOG_APPEND_SYSTAB_LOGIC = 1 -
重启数据库服务,使配置生效
-
-
动态配置
-
调用系统过程SP_SET_PARA_VALUE修改RLOG_APPEND_SYSTAB_LOGIC参数值
SQL> call sp_set_para_value(1,'RLOG_APPEND_SYSTAB_LOGIC',1);
-
-
创建数据库同步用户DMDRS(源端&目的端)
-
在源端和目的端创建数据库同步用户DMDRS,并赋予同步权限
注:
如果是在测试环境下学习,可以直接赋予DBA权限;如果是在生产环境下,需要执行权限管控,配置同步用户最小权限
-
这里我使用manager工具创建用户

-
DMDRS准备工作
DMDRS服务管理规划(源端&目的端)
-
DMDRS服务运行过程中,需要使用数据库的驱动文件访问数据库数据,需要为运行DMDRS的用户设置环境变量
-
在系统中查询驱动文件的所在位置
find /home/dmdba/dmdbms -name *dmdpi*
-
设置环境变量,添加驱动文件路径
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/drivers/dpi" echo $LD_LIBRARY_PATH
-
DMDRS配置
配置源DMDRS
-
源DMDRS服务包括Manager管理模块和CPT模块,在dmdrs安装目录下的bin/conf_sample下存有配置文件模板
<?xml version="1.0" encoding="GB18030"?> <drs><base><mgr_port>5345</mgr_port><!--如:5345--><siteid>1</siteid><!--如:1--></base><cpt><name>cpt_dm8</name><!--如:cpt_dm8--><login><dbtype>dm8</dbtype><!--如:dm8--><server>192.168.19.142</server><!--如:192.168.20.24--><user>DMDRS</user><!--如:DMDRS--><pwd>DMDRS</pwd><!--如:DMDRS--><port>5236</port><!--如:5236--></login><send><ip>192.168.19.139</ip><!--如:192.168.20.21--><port>5345</port><!--如:5345--><target_name>exec_dm8</target_name><!--如:exec_dm8--><map><item>*.*==*.*</item><!--如:*.*==*.*--></map></send></cpt> </drs>
配置目标DMDRS
-
目标DMDRS服务包括Manager管理模块和EXEC模块
<?xml version="1.0" encoding="GB18030"?> <drs><base><mgr_port>5345</mgr_port><!--如:5345--><siteid>2</siteid><!--如:2--></base><exec><name>exec_dm8</name><!--如:exec_dm8--><login><dbtype>dm8</dbtype><!--如:dm8--><server>192.168.19.139</server><!--如:192.168.20.21--><user>DMDRS</user><!--如:DMDRS--><pwd>DMDRS</pwd><!--如:DMDRS--><port>5236</port><!--如:5236--></login></exec> </drs>
DMDRS运行
管理服务(源端&目的端)
-
配置DMDRS服务脚本
-
将服务脚本模板TemplateService拷贝到执行程序目录,并修改服务脚本的名称为默认服务脚本名
cp /home/dmdba/dmdrs5/bin/service_template/TemplateService /home/dmdba/dmdrs5/bin/DrsService -
打开并修改服务脚本中的相关配置参数
##源端DMDRS配置 INSTALL_HOME=/home/dmdba/dmdrs5 PROG_DIR=/home/dmdba/dmdrs5/bin CONF_PATH=/home/dmdba/dmdrs5/bin/cpt.xml EXEC_PROG_NAME=drsvr SERVICE_TYPE_NAME="drs server"##目的端DMDRS配置 INSTALL_HOME=/home/dmdba/dmdrs5 PROG_DIR=/home/dmdba/dmdrs5/bin CONF_PATH=/home/dmdba/dmdrs5/bin/exec.xml EXEC_PROG_NAME=drsvr SERVICE_TYPE_NAME="drs server"
-
启动DMDRS服务
-
启动源DMDRS服务器
./DrsService start
-
启动目的端服务器
./DrsService start
数据复制
数据迁移
-
在源端DMDRS服务中执行数据迁移命令
说明:
数据迁移功能无需启动CPT功能模块,直接执行相应的数据迁移命令即可
-
启动控制台
./drcsl cpt.xml -
连接源DMDRS服务
CSL> connect -
将源数据库DMDRS模式下表EMPLOYEE的全量数据迁移到目标数据库
CSL> alter cpt_dm8 cp "sch.name='DMDRS' and tab.name='EMPLOYEE'"
-
-
验证迁移结果
-
到目的端数据库上去查看是否存在表EMPLOYEE,表中是否存在数据,数据是否能够对得上
##查看表EMPLOYEE中的所有数据 select * from DMDRS.EMPLOYEE;##查看EMPLOYEE表中的数据量 select count(*) from DMDRS.EMPLOYEE;
- 35个数据完完整整地迁移过来了
-
数据同步
-
配置目标DMDRS服务
-
在目标DMDRS服务中打开exec.xml配置文件,修改配置文件内容
<?xml version="1.0" encoding="GB18030"?> <drs><base><mgr_port>5345</mgr_port><siteid>2</siteid></base><exec><name>exec_dm8</name><login><dbtype>dm8</dbtype><server>192.168.19.4</server><user>DMDRS</user><pwd>DMDRS</pwd><port>5236</port> </login><group><item><id>35</id><exec_policy>0</exec_policy> <desc><table>*.*</table></desc></item></group></exec> </drs>
-
-
配置源端DMDRS服务器
-
在源端DMDRS服务中打开cpt.xml配置文件,修改配置文件内容
<?xml version="1.0" encoding="GB18030"?> <drs><base><mgr_port>5345</mgr_port> <siteid>1</siteid></base><cpt><name>cpt_dm8</name><login><dbtype>dm8</dbtype><server>192.168.19.7</server><user>DMDRS</user><pwd>DMDRS</pwd><port>5236</port></login><send><ip>192.168.19.4</ip><port>5345</port><target_name>exec_dm8</target_name><map><item>*.*==*.*</item></map></send></cpt> </drs>
-
-
运行DMDRS服务器
-
启动目标DMDRS服务器
./DrsService start -
启动源DMDRS服务器
./DrsService start
-
-
启动源端CPT模块
-
启动控制台,连接服务
##启动控制台 ./drcsl cpt.xml##连接DMDRS服务 CSL> connect -
设置数据库当前最新的日志LSN作为日志解析的起始位置
CSL> alter cpt_dm8 set lsn -
启动CPT模块,将源数据库中DMDRS模式下所有的表添加同步,并在同步之前把源端表的全量数据装载到目标数据库
##启动CPT模块 CSL> start##添加同步 CSL> alter cpt_dm8 add table "sch.name='DMDRS'"
-
-
验证同步结果
-
在源DMDRS服务上创建表test,并插入数据
##创建表test CREATE TABLE DMDRS.test(id INTEGER,name VARCHAR(20) );##插入数据 INSERT INTO DMDRS.TEST VALUES(1,'Tom'),(2,'Jerry');##提交 commit; -
到目的DMDRS服务上查看数据是否同步过来

- 源端DMDRS服务上的表已经同步过来了,同时表中的数据也过来了
-
至此,DMDRS工具的数据迁移和同步已经验证成功。
总结
- 本次主要是DMDRS工具的搭建使用,需要注意许可证的时间,我最开始搭建的时候没有注意到这个问题,在配置完后启动服务就报错了。还有要多注意源端DMDRS的LSN序列与目的端DMDRS的LSN是否能够对得上,不然就会报错网络连接失败,数据也会同步不过去。
参考
- 达梦在线服务平台——https://eco.dameng.com
相关文章:
DMDRS搭建
DMDRS搭建 本次进行DMDRS工具的部署搭建以及使用 环境配置 操作系统及数据库配置 操作系统:使用CentOS7数据库:dm8_20240408_x86_rh7_64 服务器配置 实例名服务器IPDM1192.168.19.7(源DMDRS)DM2192.168.19.4(目的…...
【油猴脚本】00006 案例 Tampermonkey油猴脚本自定义表格列名称,自定义表格表头,自定义表格的thead里的td
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【油…...
JS - 获取剪切板内容 Clipboard API
目录 1,需求最终效果 2,实现示例 3,注意点1,只支持安全上下文环境2,只能读取当前页面的剪切板3,权限获取问题4,获取内容的 MIME_TYPE 问题1,文本内容2,图片内容 5&#x…...
Qt自动打开文件夹并高亮文件
在Qt中,如果你想要打开一个文件夹并在文件管理器中高亮显示(选中)某个文件,你可以使用以下方法: 对于Windows系统,你可以使用QProcess来启动explorer命令,并带上/select,参数来高亮显示文件。以…...
神经网络-MNIST数据集训练
文章目录 一、MNIST数据集1.数据集概述2.数据集组成3.文件结构4.数据特点 二、代码实现1.数据加载与预处理2. 模型定义3. 训练和测试函数4.训练和测试结果 三、总结 一、MNIST数据集 MNIST数据集是深度学习和计算机视觉领域非常经典且基础的数据集,它包含了大量的手…...
数据结构二
求 sizeof(name1)?(晟安信息) struct name1{ char str; short x; int num; }; sizeof name1内存对齐 8个字节 char分配8个字节 然后 short节省空间在4个字节中 而这个int独自分配分配内存 4个字节所以共8个字节 (电工时代) typedef struct _a { char c1; long i…...
Python|基于Kimi大模型,删除已上传的“指定文档”或“全部文档”(6)
前言 本文是该专栏的第6篇,后面会持续分享AI大模型干货知识,记得关注。 在本专栏上一篇《Python|基于Kimi大模型,实现上传文档并进行对话(5)》中,笔者有详细介绍“基于kimi大模型,上传指定文档并结合prompt,获取目标文本数据”。对此感兴趣的同学,可以直接点击翻阅查…...
CenterPoint-KITTI:环境配置、模型训练、效果展示;KITTI 3D 目标检测数据集下载
目录 前言 Python虚拟环境创建以及使用 KITTI3D目标检测数据集 CenterPoint-KITTI编译遇到问题合集 ImportError: cannot import name VoxelGenerator from spconv.utils 失败案例 最终解决方案 对于可选参数,road plane的处理 E: Unable to locate packag…...
【Android】ViewPager
1.ViewPager的简介和作用 ViewPager是android扩展包v4包中的类,这个类可以让用户左右切换当前的view,用于允许用户在几个页面(或称为碎片)之间左右滑动切换。它通常用于创建像画廊或轮播图那样的用户体验。 ViewPager类直接继承了…...
[go] 命令模式
命令模式 将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。 模型说明 触发者类负责对请求进行初始化,其中必须包含一个成员变量来存储对于命令对象的引用。触发命令,而不同接受者直接…...
代码随想录冲冲冲 Day48 单调栈Part2
42. 接雨水 关键点有以下几个 首先是怎么去理解接雨水 其实就是找每一个段的左边第一个最大值和右边第一个最大值 既然是最大值 那么单调栈就是递增的 左边第一个最大值其实就是pop掉中间的之后st.top 由于是出现大于等于情况时候进行操作 所以右边最大值就是i 接下来就…...
企业内训|Nvidia智算中心深度技术研修-某智算厂商研发中心
课程概述 此企业内训课程“Nvidia智算中心的深度技术研修”专为某智算厂商研发中心设计,内容涵盖了从基础设施构建到高性能计算优化的全方位技术要点。课程为期七天,分模块详细讲解了NV算力资源的网络架构、存储优化、智算集群的建设与自动化管理、NCCL…...
《算法笔记》例题解析 第3章入门模拟--3图形输出(9题)2021-03-03
例题 旋转方阵 题目描述 Time Limit: 1000 ms Memory Limit: 256 mb 打印出一个旋转方阵,见样例输出。 输入描述: 输入一个整数n(1 < n < 20), n为方阵的行数。 输出描述: 输出一个大小为n*n的距阵 输入 5 输出 1 16 15 14 13 2 17 24 23 12 3 18 25 22 11 4 1…...
合宙Air201模组LuatOS:PWRKEY控制,一键解决解决关机难问题
不知不觉间,我们已经发布拉期课程:hello world初体验,点灯、远程控制、定位和扩展功能,你学的怎么样?很多伙伴表示已经有点上瘾啦!合宙Air201,如同我们一路升级打怪的得力法器,让开发…...
Kafka 命令详解及使用示例
文章目录 Kafka 命令详解及使用示例Kafka 命令详解kafka-topics.sh:主题管理创建主题创建带副本的主题修改主题分区数了解分区分布列出主题查看主题详情删除主题 kafka-console-producer.sh:消息生产者发送消息到主题带键值对的消息消息生产性能优化带分…...
重生归来之挖掘stm32底层知识(1)——寄存器
概念理解 要使用stm32首先要知道什么是引脚和寄存器。 如下图所示,芯片通过这些金属丝与电路板连接,这些金属丝叫做引脚。一般做软件开发是不需要了解芯片是怎么焊的,只要会使用就行。我们平常通过编程来控制这些引脚的输入和输出,…...
Qt构建JSON及解析JSON
目录 一.JSON简介 JSON对象 JSON数组 二.Qt中JSON介绍 QJsonvalue Qt中JSON对象 Qt中JSON数组 QJsonDocument 三.Qt构建JSON数组 四.解析JSON数组 一.JSON简介 一般来讲C类和对象在java中是无法直接直接使用的,因为压根就不是一个规则。但是他们在内存中…...
合宙Air201模组LuatOS扩展功能:温湿度传感器篇!
通过前面几期的学习,同学们的学习热情越来越高。 合宙Air201模组除了支持3种定位方式外,还具有丰富的扩展功能,比如:通过外扩BTB链接方案,最多可支持21个IO接口:SPI、I2C、UART等多种接口全部支持。 本期…...
主流敏捷工具scrum工具
在当今的快速变化和高需求的业务环境中,敏捷开发已经成为许多企业实现快速迭代和响应市场需求的重要方法。而在众多敏捷工具中,选择适合自己团队的工具尤为重要。 今天,我们将对比几款主流的敏捷工具,供参考 1. Leangoo领歌&…...
探索微服务架构:从理论到实践,深度剖析其优缺点
微服务架构(Microservice Architecture)是一种软件开发架构形式,它的核心 思想是将大型应用程序拆分成一组小的服务,每个服务都运行在其独立的进程中,并且 服务与服务之间通过轻量级的通信机制(如HTTP REST…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别
【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
Java并发编程实战 Day 11:并发设计模式
【Java并发编程实战 Day 11】并发设计模式 开篇 这是"Java并发编程实战"系列的第11天,今天我们聚焦于并发设计模式。并发设计模式是解决多线程环境下常见问题的经典解决方案,它们不仅提供了优雅的设计思路,还能显著提升系统的性能…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...
DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...
