注册
数据库迁移DTS使用O-D,M-D
专栏/技术分享/ 文章详情 /

数据库迁移DTS使用O-D,M-D

Ma- 2025/07/18 342 0 0
摘要

数据迁移

迁移流程

image.png


需求确认

  • 场景分类:迁移涉及容灾备份、应用改造/替代、数据库版本升级/回退、数据库替代、业务分流等不同场景。
  • 工具选择依据:需根据场景特点(数据流向、停机窗口、同步需求、数据处理复杂度)匹配迁移工具及方案。

数据库调研

  • 调研目标:确保迁移工具及方案满足需求,需全面分析源端与目标端环境。
  • 关键调研维度
    1. 环境信息
      • 源/目标端操作系统、网络配置(端口开放情况)、安全策略、可视化界面支持能力。
      • 服务器资源(CPU、内存)、存储容量、端口状态。
    2. 业务系统信息
      • 业务类型、运行时段、停机窗口时长、数据量级、数据增量频率、并发访问量。
    3. 数据库信息
      • 数据总量、字符编码规则、归档保留策略、数据库对象数量(表/索引/视图等)、表空间分布。

迁移评估

  • 达梦工具支持
    1. DTS(数据迁移工具)
      • 提供异构数据源兼容性评估,通过图形化向导完成迁移可行性分析。
    2. DEM(达梦企业管理器)
      • 支持在线采集评估,自动生成兼容报告,覆盖Oracle、MySQL、SQL Server等数据库迁移至达梦的场景。
    3. SQLark 百灵连接
      • 生成源库画像,识别大表/大字段表等迁移难点,推荐迁移策略(如分批次迁移、并行处理)。
  • 人工评估补充:需单独评估大表/大字段表的迁移策略(如独立迁移、分片处理)。

移植工具选择

达梦提供四类工具,覆盖不同迁移场景:

  1. 数据迁移工具 DTS
    image.png

    • 功能:支持跨数据库(Oracle/MySQL/DM等)全量迁移,含对象迁移(视图/存储过程/触发器等)、数据类型自动映射、条件筛选迁移。
    • 特性:向导式操作、Web端监控、迁移评估功能。
    • 场景:静态全量迁移,需停机窗口,源端无数据变更。
  2. SQLark 百灵连接
    image.png

    • 功能:全流程迁移服务,含评估、实施、校验,支持断点续迁(Oracle-DM)。
    • 特性:自动化语法解析、分布式迁移、大表处理优化。
    • 场景:Oracle/MySQL/PostgreSQL全量迁移至达梦。
  3. 数据复制软件 DMDRS
    image.png

    • 功能:实时数据同步,支持全量+增量、跨网闸/文件摆渡、目标端为Kafka/Redis等。
    • 特性:非介入式日志捕获、主备同步、秒级延迟。
    • 场景:平滑迁移(短停机)、灾备、业务分流。
  4. 数据集成软件 DMDIS
    image.png

    • 功能:支持异构数据源(文件/WebService/Restful)抽取、转换、加载,内置字符集/日期格式转换规则。
    • 特性:二次开发接口、作业调度监控。
    • 场景:跨系统数据共享、数据清洗、周期性集成。

制定移植计划

  • 依据:需求分析(停机窗口/数据量/业务类型) + 数据库调研(环境/业务/对象规模)。
  • 目标:选择工具组合,规避兼容性问题,规划迁移阶段(如先迁移核心表)。

移植实施

  • 目标库预配置:按源库结构创建实例、表空间、用户,提升兼容性。
  • 工具自动转换:多数对象(表/索引)自动迁移,少数语法差异需手动调整(如存储过程)。

移植结果校验

  • 校验维度
    1. 对象完整性:表/视图/存储过程数量一致。
    2. 数据一致性:行数、关键字段值比对。
    3. 业务功能验证:通过测试用例覆盖核心流程。

移植后收尾工作

  • 索引补录:重建缺失索引以优化性能。
  • 统计信息更新:确保优化器生成高效执行计划。
  • 备份与脚本整理:备份目标库,归档迁移脚本供后续维护。

应用移植与优化

  • 连接切换:修改应用配置指向达梦数据库,通常无需代码修改。
  • 性能测试:验证功能正确性,优化慢SQL(如索引调整、SQL重写)。
  • 高可用验证:测试故障切换、负载均衡等场景。

从 Oracle 移植到 DM

构建了一套 Oracle 19C 的单机示例库,并介绍利用 DTS 工具从 Oracle 19C 移植 monei 用户下的所有对象到 DM8 数据库的详细步骤
Oracle服务器信息

调研项 调研结果
数据库后台操作系统 Red Hat Linux
数据库架构 单机
数据库版本 Oracle 19C
待迁移数据库名 monei
待迁移的模式名 monei
IP/端口信息 192.168.123.14/1521
用户名/密码 monei/monei
字符集编码 简体中文 GBK
需要移植的对象 表(数据量)、物化视图、触发器、存储过程、函数

数据库对象

[ormy:oracle]:/home/oracle>sqlplus / as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Jul 15 22:23:30 2025
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> select object_type,count(*)  from  dba_objects where owner='MONEI' group by object_type;

OBJECT_TYPE                                      COUNT(*)
---------------------------------------------- ----------
INDEX                                                   5
TRIGGER                                                 1
PACKAGE BODY                                            1
PROCEDURE                                               1
PACKAGE                                                 1
FUNCTION                                                1
LOB                                                     1
SEQUENCE                                                1
TABLE                                                   2
VIEW                                                    1

10 rows selected.

其它 Oracle 端信息统计可参考如下 SQL:

SQL> --字符集编码
SELECT value FROM NLS_Database_Parameters WHERE PARAMETER='NLS_NCHAR_CHARACTERSET';
select userenv('language') from dual;SQL>
VALUE
--------------------------------------------------------------------------------
AL16UTF16

SQL>

USERENV('LANGUAGE')
--------------------------------------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

SQL>
SQL>
SQL> --是否以字节为单位、大小写敏感
Show parameter NLS_LENGTH_SEMANTICS;SQL>

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
nls_length_semantics                 string
BYTE
SQL> --归档保留策略
select * from v$archived_log;SQL>

no rows selected

SQL> --定时作业
select * from user_jobs;SQL>

no rows selected


SQL> --权限查询语句
--查看用户系统权限
select PRIVILEGE from dba_sys_privs WHERE GRANTEE='MONEI';SQL> SQL>

PRIVILEGE
--------------------------------------------------------------------------------
CREATE TABLE
CREATE VIEW
CREATE PROCEDURE
CREATE SESSION

SQL> --查看用户对象权限
select * from dba_tab_privs WHERE GRANTEE='MONEI'; SQL>

no rows selected

SQL> --查看用户角色权限
select GRANTED_ROLE from dba_role_privs where grantee='MONEI';SQL>

GRANTED_ROLE
--------------------------------------------------------------------------------
RESOURCE
CONNECT

SQL> --表空间相关信息查询语句
--查询每个表空间的数据文件路径、实际使用大小,上限等及所属用户
select ee.username,dd.* from (select aa.*, bb.file_name, cc.NEXT_EXTENT
  from (select tbs_used_info.tablespace_name,
               tbs_used_info.alloc_mb,
               tbs_used_info.used_mb,
               tbs_used_info.max_mb,
               tbs_used_info.free_of_max_mb,
               tbs_used_info.used_of_max || '%' used_of_max_pct
          from (select a.tablespace_name,
                       round(a.bytes_alloc / 1024 / 1024) alloc_mb,
                       round((a.bytes_alloc - nvl(b.bytes_free, 0)) / 1024 / 1024) used_mb,
                       round((a.bytes_alloc - nvl(b.bytes_free, 0)) * 100 /
                             a.maxbytes) used_of_max,
                       round((a.maxbytes - a.bytes_alloc +
                             nvl(b.bytes_free, 0)) / 1048576) free_of_max_mb,
                       round(a.maxbytes / 1048576) max_mb
                  from (select f.tablespace_name,
                               sum(f.bytes) bytes_alloc,
                               sum(decode(f.autoextensible,
                                          'YES',
                                          f.maxbytes,
SQL> SQL>   2    3    4    5    6    7    8    9   10   11   12   13   14   15   16   17   18   19   20   21                                            'NO',
                                          f.bytes)) maxbytes
                          from dba_data_files f
                         group by tablespace_name) a,
                       (select f.tablespace_name, sum(f.bytes) bytes_free
                          from dba_free_space f
                         group by tablespace_name) b
                 where a.tablespace_name = b.tablespace_name(+)) tbs_used_info
         order by tbs_used_info.used_of_max desc) aa,
       dba_data_files bb,
       dba_tablespaces cc
 where aa.tablespace_name = bb.tablespace_name
   and aa.tablespace_name = cc.tablespace_name) dd
   right join dba_users ee on dd.tablespace_name=ee.default_tablespace
   where ee.username in ('MONEI'); 

USERNAME   TABLESPACE   ALLOC_MB    USED_MB     MAX_MB FREE_OF_MAX_MB USED_OF_MA FILE_NAME                                NEXT_EXTENT
---------- ---------- ---------- ---------- ---------- -------------- ---------- ---------------------------------------- -----------
MONEI      USERS               5          3      32768          32765 0%         /home/oracle/app/oracle/oradata/MONEI/us
                                                                          ers01.dbf
SQL>
SQL> select *
  from (select owner, tablespace_name, sum(b) GB
          from (select owner,
                       t.segment_name,t.partition_name,round(bytes / 1024 / 1024/1024 , 2) b,tablespace_name
                  from dba_segments t)
         where owner in ('MONEI')
         group by owner,tablespace_name);  2    3    4    5    6    7

OWNER                TABLESPACE_NAME              GB
-------------------- -------------------- ----------
MONEI                USERS                         0

SQL>

目标端DM8
启动dts
image.png
迁移管理
新建工程和迁移
点击按钮创建新的工程,输入工程名和工程描述,点击【确定】,即可创建工程,如下图所示:
image.png
image.png
迁移评估
右键选择【新建评估】,输入评估名称和评估描述,即可创建评估,如下图所示:
image.png
选择ORACLE-DM数据库迁移评估
image.png
输入数据源连接信息
image.png
评估选项设置
image.png
选择需要迁移的模式对象
image.png
选择模式对象下的对象
image.png
评阅评估任务
image.png
执行评估任务
image.png
查看评估报告
image.png
新建迁移任务
image.png
输入源端连接信息
image.png
输入目标端连接信息
image.png
迁移选项
image.png
image.png
迁移模式选择
image.png
获取迁移对象
image.png
审阅迁移任务
image.png
执行迁移任务,可以看到任务总数和完成度
image.png

数据对比

新建数据对比
image.png
数据源信息填写
image.png
目标端信息填写
image.png
对比选项
image.png
指定模式对象
image.png
选择对比对象
image.png
对比任务审阅
image.png
执行数据对比,查看对比不一致数量
image.png
登录目标端查看test01数据
image.png
登录源端查看test01数据
image.png

image.png

从 MySQL 移植到 DM

操作和Oracle中相似,需要mysql中创建

mysql> CREATE USER 'root'@'192.168.123.10' IDENTIFIED BY '!QAZ2wsx';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.123.10';
Query OK, 0 rows affected (0.01 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)

mysql>

目标端中选择mysql-dm迁移
image.png

通过评估-迁移-对比 完成数据库迁移

从 SQL Server 移植到 DM

操作和Oracle中相似,需要mysql中创建
确认迁移对象
目标端中选择SQL Server-dm迁移
image.png

通过评估-迁移-对比 完成数据库迁移

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服