第五周学习总结

第五周学习总结 达梦数据库第五周学习总结——DBLink与数据迁移实战本周深入学习了达梦数据库的 DBLink 技术同构与异构连接、ODBC 配置、DTS 数据迁移、以及 Oracle/MySQL/SQL Server 三种异构数据库向达梦的数据迁移实操。一、数据库 DBLink 技术1.1 什么是 DBLinkDBLinkDatabase Link即数据库链接简单说就是在一个数据库中创建通往另一个数据库的通道。创建之后在本地数据库执行 SQL 时可以直接查询远程数据库中的表就像查本地表一样。打个比方手机上存了联系人张三以后打电话时只需说打给张三不用每次输入 11 位手机号码。DBLink 就是把远程数据库的连接信息IP、端口、账号、密码存成一个名字之后在 SQL 中用 链接名 就能访问。1.2 同构 DBLink达梦→达梦同构 DBLink 指两端都是达梦数据库通过 MAL多节点访问层协议进行通信。MAL 是达梦内部节点间通信的专有协议配置在 dmmal.ini 文件中。前提条件1. 两台数据库的 MAL_INI 12. 两台机器网络互通ping 通3. 不能是同一台机器达梦拒绝自连报 -2235部署步骤① 删除旧链接如存在DROP LINK DM02_LINK;② 创建同构 DBLinkCREATE LINK DM02_LINKCONNECT WITH SYSDBAIDENTIFIED BY Dameng123USING 192.168.200.165/5236;③ 测试连通性SELECT 1 FROM DUALDM02_LINK;返回 1 表示成功④ 查远程库信息SELECT NAME FROM V$INSTANCEDM02_LINK;返回远程库实例名⑤ 跨库联合查询SELECT a.*, b.*FROM 本地表 aJOIN 远程表DM02_LINK b ON a.id b.id;核心语法表名链接名 —— 表示去那边执行1.3 异构 DBLink达梦→MySQL/Oracle异构 DBLink 用于达梦与不同类型数据库如 MySQL、Oracle的连接。不同于同构 DBLink 通过内部 MAL 协议异构 DBLink 依赖 **ODBC 标准接口**作为中间桥梁。ODBC 三层架构应用层(达梦 SQL) → ODBC驱动管理层(unixODBC) → 数据库驱动层(libmyodbc.so)部署步骤Step 1安装依赖yum install -y unixODBC unixODBC-devel mysql-connector-odbc mariadb-serverStep 2配置 ODBC/etc/odbcinst.ini驱动注册[MySQL]Description ODBC for MySQLDriver /usr/lib64/libmyodbc5.so # 驱动文件路径Setup /usr/lib64/libodbcmyS.soFileUsage 1/etc/odbc.ini数据源配置[MySQL_DSN] # 数据源名称(DSN)Description MySQL testDriver MySQL # 指向odbcinst.ini中的[MySQL]Server 127.0.0.1Port 3306User rootDatabase test*Step 3测试 ODBC 连通echo SELECT * FROM mysql_test; | isql MySQL_DSN rootStep 4达梦创建异构 DBLink需企业版授权CREATE LINK MYSQL_LINKCONNECT ODBC WITH rootIDENTIFIED BY USING MySQL_DSN;SELECT * FROM mysql_testMYSQL_LINK;1.4 同构 vs 异构对比| 区别 | 同构(DM→DM) | 异构(DM→MySQL) ||------|------------|----------------|| 关键字 | CREATE LINK | CREATE LINK (企业版) || 连接方式 | MAL(内部协议) | ODBC(外部驱动) || 需要 ODBC | ❌ | ✅ || 需要 dmmal.ini | ✅ | ❌ || 版本要求 | 企业版 | 企业版dm.key || 语法 | 一样 | 一样 |二、DTS 数据迁移实战2.1 DTS 简介DTSData Transfer Service是达梦自带的图形化数据迁移工具E:\DM\tool\dts.exe支持 Oracle、MySQL、SQL Server、PostgreSQL、DB2 等十余种数据库向达梦 DM8 的迁移。2.2 通用操作流程1. DTS → 新建工程2. 右键数据源 → 新建源数据库 → 测试连接3. 右键数据源 → 新建目标数据库(DM) → 测试连接4. 新建转换 → 选择迁移对象(表/视图) → 开始迁移5. 验证行数对比、索引检查、抽样数据2.3 三种场景实测| 场景 | 源库 | 状态 ||------|------|------|| Oracle→DM | Oracle XE 18c (WSL2) | ✅ 完成 || MySQL→DM | MySQL 5.5 (WSL2) | ✅ 完成 || SQL Server→DM | SQL Server Express | ⏳ 待安装 |2.4 常见类型映射| Oracle | MySQL | SQL Server | DM ||--------|-------|------------|-----|| NUMBER | INT | INT | DECIMAL/INT || VARCHAR2 | VARCHAR | NVARCHAR | VARCHAR || DATE | DATETIME | DATETIME | TIMESTAMP || CLOB | TEXT | TEXT | CLOB |2.5 DTS 优势- 零代码纯图形化操作拖拽即可- 批量迁移支持一次迁移几百张表- 类型自动映射自动识别源库数据类型并转换为 DM 对应类型- 增量同步支持全量增量持续同步三、Oracle XE 18c 在 WSL2 上的安装3.1 安装过程1.复制 RPM 到 WSL2cp /mnt/e/oracle-database-xe-18c-1.0-1.x86_64.rpm /tmp/rpm -ivh --nodeps /tmp/oracle-xe.rpm2.修复 hostsWSL2 关键步骤echo $(hostname -I | awk {print $1}) $(hostname) /etc/hosts3.配置 Oracle/etc/init.d/oracle-xe-18c configure端口: 1539 密码: oracle1233.2踩坑记录- WSL2 无固定 IP → 需要手动添加 hosts 记录- Oracle 默认端口 1521 在 WSL2 不可用 → 改为 1539- DTS 连接 Oracle 时不能用 localhost → 需要用 WSL2 的实际 IP172.24.95.133四、本周知识体系达梦 DM8 数据互通│┌───────────────┼───────────────┐│ │ │同构DBLink 异构DBLink DTS迁移(DM←→DM) (DM←→MySQL等) (批量数据迁移)│ │ │基于MAL协议 基于ODBC标准 图形化操作dmmal.ini odbc.ini/ Oracle/MySQL/odbcinst.ini SQLServer→DM│ │ │✅已验证 ⚠️需企业版 ✅已完成五、核心收获1. DBLink 是同构/异构数据库互通的基石同构用 MAL 协议异构用 ODBC 标准2. DTS 是最实用的迁移工具零代码完成 Oracle/MySQL→DM 的数据迁移3. ODBC 是跨数据库通信的核心标准理解了 isql、odbc.ini、odbcinst.ini 的关系就掌握了异构连接的基础4. WSL2 环境有特殊限制IP 动态变化、监听器权限等开发版缺少 dm.key 导致部分企业功能不可用5. 管道模式 echo SQL | disql -S*是避免终端卡死的最佳实践