大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。
社群交流
本章目标:掌握本章核心知识点
前置要求:完成前序章节学习
预计时长:60 分钟
为了给大家提供一些技术交流的平台,目前已成立的技术交流群:
- Oracle 数据库交流群
- 国产数据库交流群
- Linux 技术交流群
- ChatGPT 4o 免费体验群
需要进群(均已超过 200 人,需要邀请)可以添加号主微信:Lucifer-0622,备注对应的群名即可。
前言
SQLark 号称 5 步!像达梦原厂专家一样迁移!,我倒要来看看怎么个事儿!
前文 SQLark:高效、便捷的数据生成利器! 已经详细介绍过 SQLark,这里就不多介绍了,直接开启实战:SQLark 的迁移功能。
介绍
SQLark 数据迁移提供全流程的异构数据库迁移服务,通过迁移评估和数据迁移两个环节和自动化语法解析,提前识别可能存在的改造工作,生成最佳迁移策略,一键迁移到目标数据库,最大化降低用户的数据库迁移成本。
目前已支持的迁移类型:
| 源数据库版本 | 目标数据库版本 |
|---|
| Oracle 11g 及以上 | DM 8 系列 |
| MySQL 5.7、8.0 | DM 8 系列 |
支持对上述数据库进行静态全量迁移。
一次完整的数据库迁移流程,包括:
- 迁移评估:迁移评估环节通过分析数据库对象、大表、大字段表等迁移重难点情况,采集源库对象的 SQL 语句,评估语法兼容性,生成准确的改造工作量和迁移策略。

- 数据迁移:数据迁移环节提供一站式全自动迁移,以合理的策略完成对象结构迁移、全量数据迁移,并对迁移效果进行一致性验证,采取任务式管理方式保障迁移工作完成。

SQLark 同时支持仅迁移评估,或跳过评估直接开始数据迁移环节,满足不同迁移场景需求。
迁移准备
本文打算演示 Oracle 数据库(19C)迁移到达梦数据库(DM8),下面先准备一下迁移测试环境:
| 角色 | 数据库类型 | 版本 | IP 地址 |
|---|
| 源端 | Oracle | 19C | 192.168.6.194 |
| 目标端 | DM | 8 | 192.168.6.55 |
Oracle 19C 一键安装
Oracle 数据库还是使用我写的 Oracle 一键安装脚本来一键部署,方便快捷。
Oracle 使用一键安装脚本部署:https://ora100.com/shell-install
不过多介绍,直接一键安装完事:
1./OracleShellInstall -lf ens192 `# 主机网卡名称`\
2-n oracle19c `# 主机名`\
3-op oracle `# 主机 oracle 用户密码`\
4-d /u01 `# Oracle 软件安装基础目录`\
5-ord /oradata `# 数据库文件存放目录`\
6-o lucifer `# 数据库名称`\
7-dp oracle `# sys/system 用户密码`\
8-ds AL32UTF8 `# 数据库字符集`\
9-ns AL16UTF16 `# 国家字符集`\
10-redo 1000 `# 在线重做日志大小(M)`\
11-opd Y `# 是否优化数据库`
1[oracle@oracle19c:/home/oracle]$ sas
2
3SQL*Plus: Release 19.0.0.0.0 - Production on Mon Nov 11 16:46:50 2024
4Version 19.3.0.0.0
5
6Copyright (c) 1982, 2019, Oracle. All rights reserved.
7
8Connected to:
9Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
10Version 19.3.0.0.0
11
12SYS@lucifer SQL> select instance_name,status from v$instance;
13
14INSTANCE_NAME STATUS
15---------------- ------------
16lucifer OPEN
至此,Oracle 数据库实例部署完成。
🔥 源端测试数据库可以使用 SQLark 的数据生成功能来辅助生成,参考我前一篇写的:SQLark:高效、便捷的数据生成利器!,非常细致的演示了本文中的测试表如何生成。
DM8 一键安装
达梦数据库安装部署推荐使用达梦一键安装脚本快速部署一套达梦单机数据库,脚本还支持一键部署(脚本免费下载使用):
- 数据守护[dw]
- DMDSC集群
- dsc集群[dsc]
- dsc集群(ASM镜像)[dscm]
基本安装场景全都囊括了,打遍天下无敌手,上手容易,用就完事了。
达梦一键安装脚本下载地址:https://gitee.com/hnyuanzj/DMShellInstall
我直接使用脚本一键部署达梦 8 数据库:
1./DMShellInstall -hn dm8 `# 主机名`\
2-dp Dameng@123 `# dmdba用户密码`\
3-d /dm `# 软件安装目录`\
4-dd /dmdata `# 数据库文件目录`\
5-ad /dmarch `# 数据库归档目录`\
6-bd /dmbak `# 数据库备份目录`\
7-dn DAMENG `# 数据库名称`\
8-in DMSERVER `#实例名称`\
9-es 32 `# 数据文件簇大小`\
10-ps 32 `# 数据页大小`\
11-cs Y `# 字符串大小写敏感`\
12-c 1 `# 数据库字符集`\
13-bpm 1 `# 结尾空格填充模式`\
14-sl 102400 `# 归档空间大小`\
15-pn 5236 `# 监听端口号`\
16-sp SYSDBA `# 数据库SYSDBA用户密码`\
17-bm 2 `# 数据库备份模式 1全备 2增量`\
18-opd Y `# 优化数据库参数`\
19-mp 80 `# 优化数据库物理内存占比`\
20-di dm8_20240712_x86_rh7_64.iso `# 达梦ISO镜像名称`
1[dmdba@dm8:/home/dmdba]$ ds
2
3服务器[LOCALHOST:5236]:处于普通打开状态
4登录使用时间 : 2.884(ms)
5密钥过期时间:2025-07-03
6disql V8
716:44:31 dmdba@DAMENG:5236 SQL> select instance_name,status$ from v$instance;
8
9INSTANCE_NAME STATUS$
10------------- -------
11DMSERVER OPEN
12
13已用时间: 0.317(毫秒). 执行号:1105.
📢 注意:这里部署达梦数据库时需要注意下几个初始化参数,初始化之后无法修改:
- -es [EXTENT_SIZE]:簇大小默认为 16 页,建议设置成 32 页。
- -ps [PAGE_SIZE]:页大小默认为 8K,建议设置成 32K,一条记录的长度,受到页大小的限制,不可以超过页大小的一半,所以建议一开始规划页大小为 32K。
- -cs [CASE_SENSITIVE]:默认是大小写敏感,源端为 Oracle 情况下,建议保持默认大小写敏感即可。
- -c [CHARSET]:字符集编码,可选 GB18030、UTF-8,默认为 GB18030,如果只存储中文和字母数字,使用 GB18030 更节省空间。
- -bpm [BLANK_PAD_MODE]:空格填充参数,是否要兼容 Oracle 进行设置,即在 BLANK_PAD_MODE = 0 的情况下,’A’ 和 ’A ’ 被认为是相同的值,参数为 1 的情况下,认为是两个不同的值,根据现场具体应用的需求进行设置。此为初始化参数,只能在初始化时候指定,后续不可以修改,需要提前做好评估,但是源端为 Oracle 数据库的时候,建议设置为 1。
- -cm [COMPATIBLE_MODE]:兼容参数,置为 2 为兼容 Oracle 参数,在 dm.ini 中可以进行配置,如果默认 0 的情况下,达梦视 null 不等同于空字符串,用户可能会插入空串,会导致 is null 查不出全部数据,所以视情况而定是否需要修改。
在 SQLark 正式迁移之前也会验证这些参数是否符合要求:

如果上述参数不符合要求,Oops 很不幸,你需要重新初始化达梦数据库实例,所以很重要!!!
连接源数据库
首先,使用 SQLark 连接到源数据库 Oracle 19C:

保存连接,双击即可连接 Oracle 19C 数据库:

连接目标数据库
数据源选择 达梦,填写关键信息,测试连接:

保存连接,双击即可连接 DM8 数据库:

数据源连接成功。
打开迁移功能
打开数据迁移功能:

打开后会跳转到网页端:

整个迁移过程分为迁移评估和数据迁移两步。
迁移评估
在正式迁移前,对源数据库进行迁移评估,确保对源数据库的情况更加了解。评估任务列表包含任务名、源数据库、目标数据库信息、评估范围、状态、当前进度、创建时间和其他操作等信息。

连接源数据库
评估任务创建成功后,在本步骤需要连接源数据库,以便后续分析源库对象、兼容性、大字段表、大数据量表等迁移重难点情况,生成源库画像和迁移策略,评估迁移需要投入的工作量。
SQLark 支持通过以下两种方式连接源库:
- 导入已有连接:从 SQLark 已有连接导入,可选择导入历史连接信息或从 SQLark 连接列表中选择。
- 连接新的数据库:创建新的数据库连接。
选择已有连接 oracle19c,确认连接信息无误后,点击 测试连接,显示 数据库测试连接成功 信息后即可成功连接:

测试连接成功后,点击 下一步,选择评估范围,即可连接至源库。
选择评估范围
成功连接源库后,选择需要评估的模式后,点击 下一步,生成源数据库画像,将开始源库画像生成,已选模式不可修改:

📢 注意:源数据库为 Oracle 数据库时,SQLark 不支持以下默认模式的迁移:
1'APEX_050000', 'AUDSYS', 'ADAMS', 'ANONYMOUS',
2'AURORA$ORB$UNAUTHENTICATED', 'AWR_STAGE', 'APEX_030200', 'APEX_040200',
3'APEX_PUBLIC_USER', 'APPQOSSYS', 'BI', 'BLAKE', 'CLARK', 'CSMIG',
4'CTXSYS', 'DBSNMP', 'DIP', 'DMSYS',
5'DSSYS', 'DEMO','DVSYS', 'DVF',
6'DBSFWUSER', 'EXFSYS','FLOWS_FILES',
7'GGSYS', 'GSMADMIN_INTERNAL', 'GSMCATUSER','GSMUSER', 'HR',
8'IX', 'JONES', 'LBACSYS', 'MDDATA', 'MDSYS','MGMT_VIEW',
9'OE', 'OLAPSYS', 'ORACLE_OCM', 'ORDDATA', 'ORDPLUGINS',
10'ORDSYS', 'OUTLN', 'OWBSYS', 'OWBSYS_AUDIT','OJVMSYS',
11'PERFSTAT', 'PM', 'REMOTE_SCHEDULER_AGENT','SCOTT', 'SH',
12'SI_INFORMTN_SCHEMA', 'SPATIAL_CSW_ADMIN_USR',
13'SPATIAL_WFS_ADMIN_USR', 'SYS', 'SYSMAN', 'SPATIAL_CSW_ADMIN_USR','SYSBACKUP',
14'SYSKM', 'SYSDG', 'SYSRAC', 'SYS$UMF','SYSTEM',
15'TRACESVR', 'TSMSYS', 'WMSYS', 'XDB', 'XS$NULL', 'GSMROOTUSER'
SQLark 支持在授予只读权限或非 SYSDBA 用户权限的情况下,正常开展迁移评估和实施工作。
源数据库画像
选择评估范围后,SQLark 将对登录用户权限范围内,指定用户下全部对象信息进行分析和采集,生成源数据库画像,提前识别可能存在的改造风险及工作量。
SQLark 会采集数据库基本信息、表空间信息、表数据信息、对象信息等生成画像,等待进度加载至 100% 即可:

画像加载耗时,取决于源库的对象复杂程度、数据量、源库和 SQLark 所在服务器的实际情况。为保障画像生成成功,请确保部署环境稳定,避免出现网络中断、服务器重启、所在终端故障等问题,否则可能会导致任务异常中断。
获取源库的整体情况,包括源库的基本参数信息、对象兼容性分析结果和表数据统计信息:

这里我的测试数据还比较简单,生产情况下,因数据库语法庞杂、使用灵活,评估结果中预计迁移耗时、兼容性分析等信息还是以实际迁移结果为准。
迁移策略
迁移策略是迁移评估的最后一步,将根据源数据库画像生成自动化迁移策略,待策略确认后,将按照该策略进行数据库迁移工作。
获取当前迁移任务的待迁移对象数量、兼容情况,改写工作量及预计迁移耗时等基本信息:

点击页面右上方 导出策略,即可将迁移策略报告导出为 PDF 格式,为正式迁移实施提供重要参考。
在待迁移模式统计模块,点击 查看迁移步骤, 查看该模式下数据库对象和表数据的自动化迁移顺序:



在完成迁移评估后,可点击页面右上角 立即开启自动化迁移,快捷创建并启动多个数据迁移任务。如仅需进行迁移评估任务,点击 关闭任务 即可。
迁移实施
点击 立即开启自动化迁移 按钮,打开新建迁移任务窗口:

连接目标数据库
确认连接信息无误后,点击 测试连接,显示 数据库测试连接成功 信息后即可成功连接。

测试连接成功后,点击 下一步,确认迁移范围/配置,即可连接至目标库:

目标库达梦空闲连接数,测试环境建议设置为 300 或以上,否则可能导致后续迁移失败;
选择迁移范围/配置
SQLark 客户端版本限制单模式迁移,并且所选对象占用空间须小于 30 GB。
SQLark 提供:
- 全量迁移:SQLark 将按照依赖关系,对数据库对象实施自动化迁移。
- 指定范围迁移:SQLark 支持指定所选模式下部分对象迁移,可将源库中的数据对象定义(表结构、索引、约束、注释等)先迁移至目标库中,对耗时长的大表、大字段表后续单独迁移。
选择需要迁移的源库用户和角色,并确认其迁移范围:

为提升迁移效率,SQLark 根据当前部署环境自动生成以下最佳迁移参数,参数确认无误后,点击 确认 按钮:

批量提交行数和批量提交数据量,以优先达到上限为准。
环境检查
在进行环境检查时,SQLark 采取任务管理制度,全部检查项通过后,才可进入下一步,避免遗漏任何关键环节造成迁移失败。具体操作步骤如下:
- 目标库磁盘检查:SQLark 将根据专家经验提供目标库磁盘检查建议,用户需检查目标库的磁盘空间是否充足及是否按需增加临时表空间大小。
- 初始化参数检查:将显示各检查项的检查结果,初始化参数项的全部检查结果为 通过 ,即可单击 下一步,开启数据迁移。若存在失败或告警项,可点击 如何操作,按照操作引导修改初始化参数,修改完成后可点击 重新检查,确保所有检查项通过。

迁移初始化参数设置不当,会导致迁移失败、迁移批量报错并无法修改、迁移完成后业务系统功能运行失败、数据展示异常等问题。强烈建议完成上述检查项后,再进行后续迁移。
数据库对象迁移
环境检查完成后,SQLark 将基于迁移策略对数据库对象和表数据开展自动化迁移和语法转换,为迁移异常提供错误分析和修改建议,以任务管理的方式保障迁移工作完成。
在迁移概览页面,可查看当前迁移任务的总进度、模式迁移进度、用户和角色迁移进度和待处理清单。
迁移总进度将以进度条和百分比形式显示迁移任务的整体进度和执行耗时,便于及时了解任务进展:

整个迁移任务中,未迁移成功的对象和表数据,均集中在待处理清单中解决。点击待处理清单模块的 去处理,主要包括以下三类对象:不兼容对象、异常对象和异常表数据。

点击右下角的【改写对象】,在弹出的 SQL 编辑器中,改写语句执行成功后,请务必点击【验证】,SQLark 将验证该对象是否在目标库成功创建:

所有待处理清单处理完毕后 ,可点击 下一步,开启迁移校验:

若在迁移过程中发生错误或意外情况,点击页面左下方 迁移日志,可查看迁移过程中的全部日志和异常日志:

SQLark 支持通过关键词搜索快速定位所需日志,点击 更多 可查看报错详细信息。
迁移校验
迁移状态为 迁移实施已完成 和 自动迁移已完成,待处理 时,可进行迁移校验,如为 自动迁移中 或 自动迁移已暂停 时,均无法进入迁移校验。
查看当前迁移任务的校验统计范围、迁移对象数量校验和表数量校验结果统计情况:

右上角的 生成完整迁移报告 功能暂未开放。
达梦数据库中随便找一张迁移后的表看看数据:

至此,数据迁移完成!
写在最后
虽然本次迁移使用的测试数据较少,测试不够充分,但是整体操作流程还是十分顺畅,速度很快!对于想要将 Oracle、MySQL 迁移到达梦数据库的用户,十分方便。
如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!
往期精彩文章
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」