文章目录
- Oracle数据库迁移达梦数据库
- 概述
- 源库环境准备
- Oracle数据库安装
- 数据库实例配置
- 创建测试用户与业务对象
- 源库连接信息确认
- 迁移前评估
- 启动DTS工具
- 创建评估工程与节点
- 配置评估数据源
- 配置评估内容与策略
- 选择评估对象
- 执行评估并查看报告
- 执行迁移
- 创建迁移节点
- 配置迁移数据源
- 配置迁移策略
- 选择迁移对象
- 执行迁移任务
- 迁移后对比
- 创建对比节点
- 配置对比选项
- 选择对比对象
- 验证迁移结果
- 验证测试表
- 验证视图
- 验证函数
- 验证存储过程
- 验证触发器
- 学习总结
Oracle数据库迁移达梦数据库
使用DTS工具完成Oracle到DM的迁移评估、执行、对比与验证
概述
本次学习通过达梦数据迁移工具DTS,完成从Oracle数据库到达梦数据库的完整迁移示范过程。整个流程包括源库环境准备、迁移前兼容性评估、执行数据迁移、迁移后数据对比以及迁移结果验证五个阶段,全面掌握异构数据库迁移的标准流程和关键要点。
| 项目 | 配置 |
|---|---|
| 源数据库 | Oracle 21.3 XE(Windows环境) |
| 目标数据库 | 达梦DM8(Linux环境) |
| 迁移工具 | 达梦DTS(Data Migration Tool) |
| 迁移对象 | 表、视图、函数、存储过程、触发器 |
| 迁移模式 | C##USER_A |
源库环境准备
Oracle数据库安装
在Windows宿主机环境下完成Oracle数据库的安装,本次实战使用Oracle 21.3 XE版本。解压缩安装包后点击setup.exe启动安装向导,按照提示完成软件安装。
数据库实例配置
Oracle软件安装完成后,需创建数据库实例才能进行数据存储。使用Database Configuration Assistant(DBCA)工具进行实例配置,主要步骤如下:
- 在数据库操作中选择"创建数据库"
- 创建模式选择"高级配置"
- 部署类型选择"单实例数据库"
- 设置数据库标识:全局数据库名为
orcl.dameng.com,SID为XE - 存储选项保持默认文件系统
- 网络配置确保监听端口为
1521 - 设置SYS、SYSTEM等管理员账号密码
- 确认配置无误后点击"完成"开始创建实例
创建测试用户与业务对象
使用SYS管理员登录Oracle数据库,创建测试用户并授予必要权限:
-- 创建用户CREATEUSERC##USER_A IDENTIFIED BY "Dameng123!";-- 授予权限GRANTCONNECT,RESOURCETOC##USER_A;GRANTCREATEVIEW,CREATEPROCEDURE,CREATETRIGGERTOC##USER_A;GRANTUNLIMITEDTABLESPACETOC##USER_A;切换到C##USER_A用户,创建测试业务对象,包括部门表DEPT、员工表EMP,并插入测试数据;同时创建视图、函数、存储过程和触发器等数据库对象,用于验证迁移的完整性。
-- 创建部门表CREATETABLEDEPT(DEPTNOINTPRIMARYKEY,DNAMEVARCHAR(50),LOCVARCHAR(50));-- 创建员工表CREATETABLEEMP(EMPNOINTPRIMARYKEY,ENAMEVARCHAR(50),JOBVARCHAR(30),MGRINT,HIREDATEDATE,SALDECIMAL(10,2),COMMDECIMAL(10,2),DEPTNOINTREFERENCESDEPT(DEPTNO));-- 插入测试数据INSERTINTODEPTVALUES(10,'ACCOUNTING','NEW YORK');INSERTINTODEPTVALUES(20,'RESEARCH','DALLAS');INSERTINTODEPTVALUES(30,'SALES','CHICAGO');INSERTINTOEMPVALUES(7369,'SMITH','CLERK',7902,DATE'1980-12-17',800,NULL,20);INSERTINTOEMPVALUES(7499,'ALLEN','SALESMAN',7698,DATE'1981-02-20',1600,300,30);COMMIT;源库连接信息确认
迁移前确认Oracle源库的连接参数,确保达梦DTS工具能够正常访问源库:
| 参数 | 值 | 说明 |
|---|---|---|
| 宿主机IP | 192.168.1.xxx | Oracle所在Windows主机IP |
| 监听端口 | 1521 | Oracle默认监听端口 |
| 服务名 | orcl.dameng.com | 全局数据库名 |
| 用户名 | C##USER_A | 迁移用户 |
| 密码 | Dameng123! | 用户密码 |
注意:需要确保Windows防火墙开放1521端口,且Oracle监听服务正常运行。
迁移前评估
在正式迁移前,对迁移任务进行评估是确保迁移成功的必要环节。评估能提前发现源数据库与目标数据库之间的兼容性问题,包括对象语法兼容性、字符集兼容性、对象类型支持度及数据量评估等,有效降低迁移风险。
启动DTS工具
在达梦数据库所在的Linux环境下,开启图形化界面权限并设置DISPLAY变量,进入达梦安装目录的tool目录,执行./dts启动达梦数据迁移工具。
# 设置图形化显示exportDISPLAY=:0.0# 进入工具目录cd/home/dmdba/dmdbms/tool# 启动DTS./dts创建评估工程与节点
在DTS工具中创建迁移工程oracle_to_dm,在工程下的评估目录中新建评估任务assess_employee,迁移路径选择ORACLE => DM。
配置评估数据源
配置Oracle源库连接信息,包括主机IP、端口、服务名、用户名和密码。配置完成后点击"测试连接",确认源库连接正常。
配置评估内容与策略
本次评估对象数量较少,选择"选择评估对象"方式手动指定待评估对象。由于数据量较小,无需统计表信息,评估SQL和程序兼容性时按默认选项处理,保持默认单线程执行即可。
选择评估对象
指定评估模式为C##USER_A,选择该模式下所有对象,包括两张测试表(DEPT、EMP)、视图、函数、存储过程和触发器。
执行评估并查看报告
完成所有配置后,确认评估任务配置无误,点击"完成"开始执行评估。评估完成后查看评估报告,分析兼容性结果。
本次评估结果显示,该版本Oracle数据库对象与达梦数据库兼容性较好。其中触发器存在不兼容项,其他对象完全兼容或转换后兼容。对于不兼容的对象,DTS会给出具体的不兼容原因和修改建议,需要在迁移前或迁移后进行人工调整。
执行迁移
创建迁移节点
在工程oracle_to_dm下的迁移目录中新建迁移任务migrate_employee,迁移路径选择ORACLE => DM。
配置迁移数据源
分别配置源端和目的端的数据源连接:
- 源端Oracle配置:与评估节点配置一致
- 目的端达梦配置:配置达梦目标库的IP、端口、用户名和密码,测试连接确认正常
配置迁移策略
迁移策略与评估节点配置相同,选择"选择迁移对象"方式,手动指定需要迁移的对象。
选择迁移对象
指定对象所在模式为C##USER_A,勾选需要迁移的所有对象类型,包括该模式下的两张表(DEPT、EMP)、视图、存储过程、函数与触发器。
执行迁移任务
查看迁移任务配置,确认源端和目的端对象对应关系无误后,点击"完成"开始执行迁移。迁移过程中可以查看每个对象的迁移状态和进度。
注意:如果目的端达梦数据库中已存在同名表,表迁移会失败。需要先删除目的端已存在的对象,或者在迁移策略中选择"删除已存在对象"选项。
迁移后对比
迁移完成后,需要对源库和目标库的对象定义和数据进行对比,验证迁移的准确性和完整性。
创建对比节点
在DTS工具中创建对比节点,数据源配置与迁移节点保持一致,源端为Oracle,目的端为达梦。
配置对比选项
选择"对比指定类型的对象",对比策略保持默认。对比内容包括对象定义(DDL语句)和数据(DML依据)两个维度。
选择对比对象
指定C##USER_A模式并选择该模式下所有对象,执行对比。对比完成后查看对比报告,获取对比结果。
本次对比结果显示,不一致数量为0,说明源端和目的端C##USER_A模式下的对象定义和数据完全一致,迁移成功。
验证迁移结果
使用达梦管理工具Manager或disql命令行工具连接达梦目标库,对迁移过来的对象进行功能验证,确保所有对象都能正常使用。
验证测试表
查询DEPT和EMP表的数据,确认数据完整且与源库一致:
-- 查询部门表SELECT*FROMC##USER_A.DEPT ORDER BY DEPTNO;-- 查询员工表SELECT*FROMC##USER_A.EMP ORDER BY EMPNO;-- 统计数据量SELECTCOUNT(*)FROMC##USER_A.DEPT;SELECTCOUNT(*)FROMC##USER_A.EMP;验证视图
查询迁移过来的视图,确认视图定义正确且能正常查询:
-- 查询视图SELECT*FROMC##USER_A.V_EMP_DEPT;-- 查看视图定义SELECTTEXTFROMALL_VIEWSWHEREOWNER='C##USER_A'ANDVIEW_NAME='V_EMP_DEPT';验证函数
调用迁移过来的函数,确认函数能正常执行并返回正确结果:
-- 调用函数SELECTC##USER_A.FN_SALARY_LEVEL(5000) FROM DUAL;SELECTC##USER_A.FN_SALARY_LEVEL(15000) FROM DUAL;验证存储过程
执行迁移过来的存储过程,确认存储过程能正常运行:
-- 执行存储过程CALLC##USER_A.SP_GET_EMPLOYEES_BY_DEPT(20);-- 或使用EXECEXECC##USER_A.SP_GET_EMPLOYEES_BY_DEPT(20);验证触发器
执行触发触发器的操作,确认触发器能正常触发并执行预期逻辑:
-- 插入数据触发触发器INSERTINTOC##USER_A.EMP(EMPNO, ENAME, JOB, DEPTNO)VALUES(9999,'TEST','CLERK',10);-- 验证触发器执行结果SELECT*FROMC##USER_A.EMP WHERE EMPNO = 9999;-- 清理测试数据DELETEFROMC##USER_A.EMP WHERE EMPNO = 9999;COMMIT;📸 截图位置17:触发器验证结果
学习总结
通过本次Oracle到达梦的完整迁移实践,深入掌握了异构数据库迁移的标准流程和关键要点:
- Oracle数据库安装完成后同样需要创建数据库实例才能执行SQL,实例配置通过DBCA工具完成,监听端口默认1521。
- 迁移前进行兼容性评估是必要环节,能提前发现对象语法不兼容问题,有效降低迁移风险。评估报告会给出每个对象的兼容性状态和修改建议。
- 达梦DTS工具支持Oracle到DM的完整迁移,包括表、视图、函数、存储过程、触发器等多种对象类型,迁移过程可视化,操作简便。
- 迁移后进行数据对比是验证迁移准确性的关键步骤。通过对比源端和目的端的对象定义和数据,可以确认迁移是否完整、准确。本次对比结果不一致数量为0,证明迁移成功。
- 迁移完成后需要对所有对象进行功能验证,包括表数据查询、视图查询、函数调用、存储过程执行和触发器触发,确保每个对象都能在达梦环境下正常运行。
- 对于评估中标记为不兼容的对象(如部分触发器语法),需要在迁移后进行人工检查和调整,确保业务逻辑正确。
- 整个迁移流程(评估→迁移→对比→验证)形成了完整的闭环,是生产环境数据库迁移的标准方法论,值得在实际项目中推广应用。