Skip to content

DM 迁移工具

迁移工具分类

1. DM数据迁移工具(DTS)

DM数据迁移工具(DTS)是DM数据库的核心迁移工具,支持从多种数据源迁移数据到DM数据库。

主要功能

  • 支持多种数据源:Oracle、MySQL、SQL Server、PostgreSQL、DB2等
  • 支持全量迁移和增量迁移
  • 支持结构迁移、数据迁移和对象迁移
  • 提供图形化操作界面,易于使用
  • 支持迁移任务管理和监控

适用场景

  • 从其他关系型数据库迁移到DM数据库
  • 大规模数据迁移
  • 需要增量迁移的场景

2. DM数据泵(DMP)

DM数据泵(DMP)是DM数据库的高效数据导入导出工具,用于DM数据库之间的数据迁移。

主要功能

  • 支持DM数据库之间的数据迁移
  • 支持全量数据导入导出
  • 支持并行处理,提高迁移效率
  • 支持压缩导出,减少存储空间
  • 支持增量导出和导入

适用场景

  • DM数据库之间的数据迁移
  • 大规模数据的导入导出
  • 需要高效迁移的场景

3. DM外部表

DM外部表是一种特殊的表,用于访问外部数据源的数据,支持将外部数据直接查询和导入到DM数据库。

主要功能

  • 支持访问多种外部数据源:文本文件、CSV文件、Excel文件等
  • 支持直接查询外部数据
  • 支持将外部数据导入到DM数据库
  • 支持灵活的格式定义

适用场景

  • 从文件数据源迁移数据到DM数据库
  • 需要定期从外部文件导入数据
  • 临时查询外部数据

4. DMODBC/OCI网关

DMODBC/OCI网关是DM数据库的网关产品,用于访问其他数据库系统的数据。

主要功能

  • 支持通过ODBC/OCI访问其他数据库
  • 支持透明访问异构数据库
  • 支持分布式查询和事务
  • 支持多种数据库系统

适用场景

  • 需要访问异构数据库数据
  • 分布式系统的数据访问
  • 渐进式数据迁移

DM数据迁移工具(DTS)使用

1. 安装和配置

安装步骤

  1. 从DM数据库安装包中获取DTS工具
  2. 运行安装程序,按照向导完成安装
  3. 配置源数据库和目标数据库的连接信息

配置文件

  • DTS配置文件:dts.ini
  • 日志文件:dts.log

2. 迁移流程

迁移流程包括以下步骤

  1. 创建迁移项目

    • 打开DTS工具
    • 点击"新建项目",输入项目名称和描述
    • 点击"确定",创建迁移项目
  2. 配置源数据库连接

    • 在项目中点击"新建任务",选择"数据迁移"
    • 选择源数据库类型
    • 输入源数据库连接信息:主机名、端口、数据库名、用户名、密码等
    • 点击"测试连接",验证连接是否成功
    • 点击"下一步"
  3. 配置目标数据库连接

    • 选择目标数据库类型为"DM"
    • 输入目标数据库连接信息
    • 点击"测试连接",验证连接是否成功
    • 点击"下一步"
  4. 选择迁移对象

    • 选择需要迁移的对象:表、视图、存储过程等
    • 可以选择全部对象或指定对象
    • 点击"下一步"
  5. 配置迁移选项

    • 选择迁移类型:全量迁移或增量迁移
    • 配置迁移选项:是否创建目标表、是否覆盖现有数据等
    • 点击"下一步"
  6. 执行迁移任务

    • 点击"开始",执行迁移任务
    • 监控迁移进度和状态
    • 查看迁移日志和错误信息
  7. 验证迁移结果

    • 检查目标数据库中的数据是否完整
    • 验证数据一致性
    • 测试应用程序是否正常访问迁移后的数据

3. 命令行使用

DTS工具也支持命令行方式使用,便于自动化和批量处理。

命令格式

shell
dts.exe --config <config_file> --job <job_file> [--log <log_file>]

示例

shell
dts.exe --config dts.ini --job migration_job.xml --log dts_migration.log

DM数据泵(DMP)使用

1. 数据导出

导出命令

shell
# 导出整个数据库
dexp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=full.dmp FULL=Y

# 导出指定用户
dexp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=user.dmp SCHEMAS=TEST

# 导出指定表
dexp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=table.dmp TABLES=TEST.EMP,TEST.DEPT

# 压缩导出
dexp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=compressed.dmp FULL=Y COMPRESS=Y

# 并行导出
dexp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=parallel.dmp FULL=Y PARALLEL=4

2. 数据导入

导入命令

shell
# 导入整个数据库
dimp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=full.dmp FULL=Y

# 导入指定用户
dimp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=user.dmp SCHEMAS=TEST

# 导入指定表
dimp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=table.dmp TABLES=TEST.EMP,TEST.DEPT

# 忽略错误导入
dimp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=full.dmp FULL=Y IGNORE=Y

# 并行导入
dimp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=parallel.dmp FULL=Y PARALLEL=4

3. 增量导出导入

增量导出

shell
# 增量导出
dexp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=incremental.dmp INCREMENTAL=Y

增量导入

shell
# 增量导入
dimp SYSDBA/SYSDBA@localhost:5236 DIRECTORY=/dm/backup DUMPFILE=incremental.dmp INCREMENTAL=Y

DM外部表使用

1. 创建外部表

sql
-- 创建访问文本文件的外部表
CREATE EXTERNAL TABLE emp_ext (
    empno INT,
    ename VARCHAR2(10),
    job VARCHAR2(9),
    mgr INT,
    hiredate DATE,
    sal DECIMAL(7,2),
    comm DECIMAL(7,2),
    deptno INT
) 
ORGANIZATION EXTERNAL (
    TYPE TEXT
    DEFAULT DIRECTORY data_dir
    ACCESS PARAMETERS (
        RECORDS DELIMITED BY '\n'
        FIELDS TERMINATED BY ','
        MISSING FIELD VALUES ARE NULL
        (empno, ename, job, mgr, hiredate DATE FORMAT 'YYYY-MM-DD', sal, comm, deptno)
    )
    LOCATION ('emp.csv')
);

-- 创建目录对象
CREATE DIRECTORY data_dir AS '/dm/data/DAMENG/external';

2. 查询外部表

sql
-- 查询外部表数据
SELECT * FROM emp_ext;

-- 将外部表数据导入到普通表
INSERT INTO emp SELECT * FROM emp_ext;

3. 外部表格式支持

DM外部表支持多种文件格式:

  • 文本文件(TEXT)
  • CSV文件(CSV)
  • Excel文件(EXCEL)
  • XML文件(XML)
  • JSON文件(JSON)

迁移最佳实践

1. 迁移前准备

  • 评估源数据库:了解源数据库的结构、数据量、性能等
  • 规划迁移方案:根据源数据库情况,选择合适的迁移工具和迁移方式
  • 准备目标环境:安装和配置DM数据库,确保目标环境满足迁移要求
  • 备份源数据:在迁移前备份源数据库数据,防止数据丢失
  • 测试迁移工具:在测试环境中测试迁移工具,确保迁移过程顺利

2. 迁移过程优化

  • 选择合适的迁移工具:根据迁移场景选择合适的迁移工具
  • 使用并行处理:对于大规模数据迁移,使用并行处理提高迁移效率
  • 优化迁移参数:根据实际情况调整迁移工具的参数,如缓冲区大小、并行度等
  • 监控迁移进度:实时监控迁移进度,及时处理迁移过程中的问题
  • 分批迁移:对于超大规模数据,考虑分批迁移,减少单次迁移的压力

3. 迁移后验证

  • 数据完整性验证:检查迁移后的数据是否完整,行数是否一致
  • 数据一致性验证:验证迁移前后数据的一致性,如求和、计数等
  • 应用程序测试:测试应用程序是否能正常访问迁移后的数据
  • 性能测试:测试迁移后系统的性能,确保满足业务需求
  • 安全性检查:检查迁移后的数据安全性,如权限设置、加密等

4. 常见迁移问题及解决

问题可能原因解决方案
迁移速度慢网络带宽不足、源数据库性能问题、迁移参数设置不合理优化网络环境、调整源数据库性能、优化迁移参数
迁移过程中出现错误数据类型不兼容、约束冲突、权限问题检查数据类型映射、调整约束、确保足够权限
迁移后数据不一致增量迁移配置错误、源数据在迁移过程中变化检查增量迁移配置、确保源数据在迁移过程中稳定
应用程序访问出错语法不兼容、函数差异、对象名称差异调整应用程序SQL语句、替换不兼容的函数、统一对象名称

迁移工具对比

工具支持数据源迁移方式适用场景优势劣势
DTS多种关系型数据库全量+增量异构数据库迁移支持多种数据源、增量迁移配置复杂、资源消耗大
DMPDM数据库全量+增量DM数据库间迁移高效、易用、支持并行仅支持DM数据库
外部表文件数据源全量文件数据迁移灵活、易用仅支持文件数据源
网关异构数据库实时访问透明访问异构数据无需数据复制、实时访问性能可能受网络影响

迁移案例

1. 从Oracle迁移到DM数据库

迁移步骤

  1. 使用DTS工具创建迁移项目
  2. 配置Oracle源数据库连接
  3. 配置DM目标数据库连接
  4. 选择需要迁移的对象:表、视图、存储过程等
  5. 配置迁移选项,选择全量迁移
  6. 执行迁移任务
  7. 验证迁移结果
  8. 测试应用程序访问

注意事项

  • 注意Oracle和DM数据类型的映射
  • 注意Oracle特有函数的替换
  • 注意Oracle和DM语法的差异
  • 注意Oracle和DM权限模型的差异

2. 从MySQL迁移到DM数据库

迁移步骤

  1. 使用DTS工具创建迁移项目
  2. 配置MySQL源数据库连接
  3. 配置DM目标数据库连接
  4. 选择需要迁移的对象
  5. 配置迁移选项,选择全量迁移
  6. 执行迁移任务
  7. 验证迁移结果

注意事项

  • 注意MySQL和DM数据类型的映射
  • 注意MySQL自动增长列的处理
  • 注意MySQL和DM索引的差异
  • 注意MySQL和DM事务隔离级别的差异

版本差异

版本迁移工具差异
DM 8.1.1.41 及以上支持基本的迁移工具,包括DTS、DMP等
DM 8.1.1.133 及以上增强了DTS工具的功能,支持更多数据源和增量迁移
DM 8.1.2.126 及以上优化了迁移工具的性能,支持更多并行处理和压缩功能

常见问题(FAQ)

Q1: 如何选择合适的迁移工具?

A1: 选择迁移工具应考虑以下因素:

  • 数据源类型:根据源数据库类型选择合适的迁移工具
  • 迁移规模:根据数据量大小选择合适的迁移工具
  • 迁移方式:根据是否需要增量迁移选择合适的迁移工具
  • 迁移时间要求:根据迁移时间要求选择合适的迁移工具

Q2: 如何提高迁移效率?

A2: 提高迁移效率的方法包括:

  • 使用并行处理:调整迁移工具的并行度参数
  • 优化迁移参数:调整缓冲区大小、提交频率等参数
  • 优化源数据库性能:确保源数据库在迁移过程中性能良好
  • 优化网络环境:确保源数据库和目标数据库之间的网络带宽充足
  • 分批迁移:对于超大规模数据,考虑分批迁移

Q3: 如何处理迁移过程中的错误?

A3: 处理迁移过程中的错误的方法包括:

  • 查看迁移日志:详细分析迁移日志,找出错误原因
  • 调整迁移配置:根据错误原因调整迁移配置
  • 跳过错误数据:对于部分错误数据,可以选择跳过,继续迁移其他数据
  • 修复源数据:对于源数据中的问题,修复后重新迁移

Q4: 如何验证迁移结果?

A4: 验证迁移结果的方法包括:

  • 数据行数验证:比较源数据库和目标数据库中的数据行数
  • 数据一致性验证:比较源数据库和目标数据库中的关键数据,如求和、计数等
  • 应用程序测试:测试应用程序是否能正常访问迁移后的数据
  • 性能测试:测试迁移后系统的性能

Q5: 如何处理增量迁移?

A5: 处理增量迁移的方法包括:

  • 选择支持增量迁移的工具,如DTS
  • 配置增量迁移参数,如日志挖掘、触发器等
  • 确保源数据库支持增量迁移,如开启归档日志
  • 监控增量迁移进度,及时处理增量迁移中的问题

Q6: 如何迁移存储过程和函数?

A6: 迁移存储过程和函数的方法包括:

  • 使用支持存储过程迁移的工具,如DTS
  • 检查存储过程和函数的语法兼容性
  • 替换不兼容的函数和语法
  • 测试迁移后的存储过程和函数,确保其正常执行