第二个月的产品工具学习主要围绕四个名字展开:DTS、DMDRS、DMDIS和DEM。刚开始看时,它们都和“数据”有关,很容易混在一起。真正动手之后,四个工具的边界就比较清楚了:
| 项目 | 实验内容 |
|---|---|
| Oracle | FREEPDB1,端口1521,源模式DRS_SRC |
| MySQL | dts_src数据库,customer测试表 |
| DM8 | 本机实例,端口5236 |
| DMDIS | 单机模式,管理端口8080 |
| DMDRS | cpt_oracle捕获端、exec_dm8执行端 |
| DEM | 服务端口32156,dmagent采集端 |
DMDIS本次采用Windows单机模式。学习环境使用内置元数据库,减少组件数量;正式环境可以按数据规模改用外置DM元数据库,并进一步部署控制器、调度器和执行器。
安装前主要检查:
systeminfo
java -version
netstat -ano | findstr ":8080"
netstat -ano | findstr ":9080"
安装时选择单机模式,使用安装包自带JDK,管理平台端口设置为8080。安装目录避免中文和过长路径。本机启动方式为:
cd /d C:\dmdis5\20260730142800253000\standalone
set JAVA_HOME=C:\dmdis5\20260730142800253000\jdk
standalone_start.bat
确认8080端口监听后,通过浏览器访问:
http://localhost:8080/
进入“设计—数据源”,新增DM数据源DM_DMDIS_DEMO_NEW,连接127.0.0.1:5236。测试连接成功后,可以在设计器中展开表、视图等对象。
第一组流程为FILE_TO_DB_01,把CSV文件写入DM目标表。
源文件包含3条员工数据:
ID,NAME,DEPT,SALARY
1,ZhangSan,DEV,8500
2,LiSi,FIN,7200
3,WangWu,MKT,6800
流程中使用两个节点:
CSV文件读取
→ 字段解析与映射
→ DM表写入
CSV按UTF-8读取,第一行为列名。目标表为DMDIS_DEMO.DIS_FILE_TARGET,四个字段分别映射到ID、NAME、DEPT、SALARY。
【
运行日志显示CSV读取3行、处理3行,目标表插入3行,整个流程耗时约1秒。流程节点全部显示绿色成功状态。
随后在DM管理工具中查询目标表:
SELECT ID, NAME, DEPT, SALARY
FROM DMDIS_DEMO.DIS_FILE_TARGET
ORDER BY ID;
目标端得到ZhangSan、LiSi和WangWu三条记录,部门及工资与CSV一致。这一组实验走通了最基础的“文件读取—字段映射—数据库写入—SQL校验”闭环。
第二组流程DB_TO_FILE_02反向操作,从DIS_FILE_TARGET读取数据,再输出为CSV。
DM表/视图读取
→ 选择ID、NAME、DEPT、SALARY
→ CSV文件写入
输出文件设置为UTF-8、逗号分隔,并写入列名。
运行日志中,表读取3行、CSV写出3行,流程耗时约1秒。生成的文件为db_to_file_output.csv。
导出后不能只看文件存在,还要打开文件检查列名、数据、分隔符和中文编码。实际结果中3条记录均正常写出。
第三组流程MERGE_TABLES_03把两张结构相同的表纵向合并到一张结果表。
DIS_MERGE_A:2行
↘
联合 → DIS_MERGE_RESULT
↗
DIS_MERGE_B:2行
这里的“联合”更接近UNION ALL,不是按照主键连接的JOIN。两路数据的列数量、顺序和类型需要能够对应。
运行日志显示两张源表各读取2行,联合节点处理4行,目标表插入4行。
结果表包含4条记录:张三、李四、王五和赵六。数据量符合:
2行 + 2行 = 4行
如果业务要求去重,不能把“联合”本身当成去重操作,还需要增加去重、聚合或业务主键判断。
第四组流程SPLIT_TABLE_04把一张源表按地区拆到两张目标表。
源表共4行,其中NORTH两行、SOUTH两行。流程使用两个SQL查询节点:
SELECT ID, NAME, REGION, AMOUNT
FROM DMDIS_DEMO.DIS_SPLIT_SOURCE
WHERE REGION='NORTH';
SELECT ID, NAME, REGION, AMOUNT
FROM DMDIS_DEMO.DIS_SPLIT_SOURCE
WHERE REGION='SOUTH';
两路分别写入DIS_SPLIT_NORTH和DIS_SPLIT_SOUTH。
运行日志显示两个查询节点各读取2行,两个写入节点各插入2行。
图中DIS_SPLIT_NORTH包含客户A和客户C两条数据,地区均为NORTH。SOUTH表按相同方式得到另外两条数据。
四组DMDIS结果可以汇总为:
| 流程 | 输入 | 输出 | 结果 |
|---|---|---|---|
| FILE_TO_DB_01 | CSV 3行 | DM表3行 | 成功 |
| DB_TO_FILE_02 | DM表3行 | CSV 3行 | 成功 |
| MERGE_TABLES_03 | 2行+2行 | 结果表4行 | 成功 |
| SPLIT_TABLE_04 | 源表4行 | NORTH 2行、SOUTH 2行 | 成功 |
DTS主要用于一次性迁移。本次建立ORACLE_TO_DM_01工程,将Oracle FREEPDB1.DRS_SRC.SYNC_GUI_DEMO迁移到DM的DRS_SRC.SYNC_GUI_DEMO。
连接信息如下:
Oracle:localhost:1521/FREEPDB1
DM:localhost:5236
源模式:DRS_SRC
目标模式:DRS_SRC
迁移任务包含对象分析、创建模式、创建表、复制数据、添加主键和依赖分析。
运行结果为:
| 项目 | 数值 |
|---|---|
| 任务总数 | 6 |
| 完成 | 6 |
| 失败 | 0 |
| 迁移数据 | 5行 |
DTS页面显示6项任务进度均为100%,执行完成6、失败0。
迁移后在DM目标端查询DRS_SRC.SYNC_GUI_DEMO:
目标表得到5条数据,包含3条历史记录和2条后续记录,与Oracle源端对应。
DTS能完成常用表、数据、主键和自增属性迁移,但过程、函数、包、复杂视图、字符语义和Oracle特有类型仍要单独检查。任务全部成功不等于应用已经可以直接切换,源端和目标端还要继续做行数、主键范围、金额汇总和抽样明细校验。
第二个DTS工程为MYSQL_TO_DM_02,将MySQL的dts_src.customer迁移到DM的DTS_SRC.CUSTOMER。
源表包含3行,字段包括自增主键、姓名、城市、金额和创建时间。迁移时选择创建模式、创建表、复制数据、添加主键和添加自增列。
运行结果为任务总数7、完成7、失败0。日志显示复制数据3行,并完成主键和AUTO_INCREMENT自增列处理。
DM目标表中有张三、李四、王五3条数据,金额和城市信息正常。
MySQL连接如果提示No default drivers found,需要加载匹配版本的Connector/J。工具连接成功后还要确认选中的是业务数据库dts_src,避免连到默认系统库。
DTS解决一次性迁移,DMDRS则继续解决“迁移过程中源库还在写”的问题。
本次DMDRS包含两个模块:
cpt_oracle:连接Oracle并捕获数据
exec_dm8:连接DM并执行数据变化
模式映射为:
FREEPDB1.DRS_SRC.*
→ DRS_SRC.*
增量捕获前,Oracle需要开启归档和补充日志:
SELECT LOG_MODE FROM V$DATABASE;
SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
目标执行端和源捕获端启动后,通过drcsl查看状态,并对测试表发起历史装载:
CSL> connect
CSL> show mode
CSL> load cpt_oracle table DRS_SRC.SYNC_GUI_DEMO
CSL> show cpt_oracle load table DRS_SRC.SYNC_GUI_DEMO COMPLETE
截图中cpt_oracle处于运行中,SYNC_GUI_DEMO已装载3行,状态为COMPLETE,耗时2秒。随后在DM目标端查询,3条history-row历史数据已经存在。
历史装载后保持cpt_oracle和exec_dm8运行。在Oracle源表新增一条测试数据并提交:
INSERT INTO DRS_SRC.SYNC_GUI_DEMO(ID, NAME)
VALUES(6, 'increment-live-6');
COMMIT;
源端显示已创建1行、提交完成,并能查询到ID=6 / increment-live-6。
等待约10秒后,在DM目标端查询:
SELECT ID, NAME, CREATED_AT
FROM DRS_SRC.SYNC_GUI_DEMO
ORDER BY ID;
目标端出现新增记录,总行数为6。这个结果说明DMDRS已经完成从Oracle提交事务到DM落库的增量链路。
数据进入DM后,还需要持续观察数据库和主机状态。DEM采用B/S架构,由服务端、存储数据库、浏览器和被管主机上的dmagent组成。
本次部署涉及端口:
32156:DEM Web服务
6364:Agent通信相关端口
5236:DM数据库端口
DEM服务端启动:
cd /d E:\dmdem\bin
start.bat
netstat -ano | findstr ":32156"
Agent首次使用前生成service.key并启动:
cd /d E:\dmdbs\tool\dmagent
start.bat INSTALL_SERVICE_KEY 999999
start.bat
Agent上线后,DEM已经能看到主机和主机告警,但数据库还没有纳入管理。
这个状态说明Agent通信正常,但数据库层还需要单独配置。
在DEM中新增数据库节点,选择已在线的Agent主机,填写DM地址127.0.0.1、端口5236、监控账号和实例名称。保存前分别测试直连和代理连接。
第一次添加后数据库状态显示“未知”。排查内容包括:
center_url是否正确;等待采集周期并刷新后,数据库状态转为正常:
最终页面显示:
数据库总数:1
正常运行:1
告警中:0
未知:0
已停止:0
这说明主机上报、Agent采集、数据库连接和DEM展示链路均已打通。
DTS显示100%、DMDIS节点变绿,只能说明流程没有报告失败。后面仍要查询目标表,比较行数、主键和实际内容。
Oracle PDB使用服务名FREEPDB1,不能随意当作SID填写;MySQL要加载匹配的Connector/J;DM数据源还要确认实际连接的实例和模式。
DMDRS要依赖Oracle归档、补充日志和已提交事务。只插入不提交,目标端不会得到可验收的增量结果。
同一个文件或流程重复执行,可能再次插入相同数据。可以根据业务选择插入更新、目标表覆盖、批次号或主键去重。
Agent上报主机后,还需要增加数据库节点、测试连接并等待采集周期。数据库“未知”时,按端口、账号、Agent、时间同步和日志逐项检查。
文章
阅读量
获赞
