从SQL Server2008数据库迁移、转换到Oracle 19c数据库 ,Oracle SQL Developer+spoon_kettle组合使用迁移步骤

发布时间:2026/9/25 15:25:16
从SQL Server2008数据库迁移、转换到Oracle 19c数据库 ,Oracle SQL Developer+spoon_kettle组合使用迁移步骤 1. 迁移目标本文档用于指导将原 CS 架构体检系统使用的 SQL Server 2008 数据库迁移并转换到 BS 架构系统使用的 Oracle 19c 数据库。迁移方式使用 Oracle SQL Developer 负责表结构、索引、约束、视图、部分对象的迁移转换。使用 Spoon/Kettle 负责数据迁移。对特殊字段、异常数据、业务关键表进行人工校验和二次处理。2. 工具介绍2.1 Oracle SQL DeveloperOracle SQL Developer 是 Oracle 官方提供的免费图形化数据库工具支持 Oracle 数据库开发、SQL 执行、对象管理、数据导入导出也支持连接部分第三方数据库并迁移到 Oracle。在本次迁移中SQL Developer 主要用于连接 SQL Server 2008 源库。连接 Oracle 19c 目标库。捕获 SQL Server 表结构和数据库对象。将 SQL Server 对象转换为 Oracle 对象。生成 Oracle DDL 脚本。执行结构迁移和部分数据迁移。2.2 jTDS JDBC 驱动SQL Developer 连接 SQL Server 时需要使用 jTDS 驱动。**注意**SQL Developer 的 SQL Server / Sybase 第三方连接页官方文档仍然要求用 jTDS 驱动不是微软的 mssql-jdbc-*.jar(刚开始用的这个无法识别),先下载jtds-1.3.1.jar。我下载好放到了SQL Developer/jlib目录方便管理已验证可用jtds-1.3.1.jar配置路径工具 - 首选项 - 数据库 - 第三方 JDBC 驱动程序 - 添加条目添加jtds-1.3.1.jar后重启 SQL Developer再新建连接时应能看到 SQL Server 连接页签。2.3 Spoon/KettleSpoon/Kettle 更适合处理数据迁移中的字段清洗、类型转换、异常行落地和分批导入。建议分工SQL Developer优先负责结构转换。Spoon/Kettle优先负责复杂数据迁移。3. 迁移前准备3.1 源库准备确认 SQL Server 2008 源库信息服务器地址 端口1433 数据库名 用户名 密码3.2 目标库准备确认 Oracle 19c 目标库信息服务器地址 端口1521 服务名/SID 迁移目标用户名 密码3.3 备份 SQL Server 源库(建议)迁移前必须先备份 SQL Server 数据库。4. SQL Server 与 Oracle 常见字段类型对应关系SQL Server 2008 类型Oracle 19c 推荐类型说明intNUMBER(10)普通整数bigintNUMBER(19)大整数smallintNUMBER(5)小整数tinyintNUMBER(3)0 到 255bitNUMBER(1)或CHAR(1)布尔标志位decimal(p,s)NUMBER(p,s)金额、数量numeric(p,s)NUMBER(p,s)金额、数量moneyNUMBER(19,4)金额字段需重点校验smallmoneyNUMBER(10,4)金额字段需重点校验char(n)CHAR(n)固定长度字符varchar(n)VARCHAR2(n)普通字符串nvarchar(n)NVARCHAR2(n)或VARCHAR2(n CHAR)中文字段建议检查长度语义textCLOB大文本ntextNCLOB或CLOB中文大文本datetimeDATE或TIMESTAMP普通业务时间可用 DATEsmalldatetimeDATE精度较低dateDATESQL Server 2008 支持 datetimeVARCHAR2或INTERVAL需按业务含义处理uniqueidentifierVARCHAR2(36)GUIDbinaryRAW二进制varbinaryRAW或BLOB大字段用 BLOBimageBLOB图片、附件xmlXMLTYPE或CLOB优先按系统读取方式决定5. 表结构、视图、触发器等迁移步骤5.1 配置 SQL Server 驱动打开 SQL Developer。进入工具 - 首选项 - 数据库 - 第三方 JDBC 驱动程序添加jtds-1.3.1.jar重启 SQL Developer。新建连接确认出现 SQL Server 页签。5.2 创建 SQL Server 源库连接在 SQL Developer 中新建 SQL Server 连接连接名SQLSERVER2008_xxxx 主机名SQL Server 服务器 IP 端口1433 数据库源数据库名 用户名SQL Server 用户名 密码SQL Server 密码点击测试确认连接成功。如果使用 Windows 身份认证优先改用 SQL Server 用户名密码方式连接减少驱动和本机认证组件依赖。5.3 创建 Oracle 目标库连接新建 Oracle 连接连接名ORACLE19C_xxxx 用户名Oracle 目标用户名 密码Oracle 目标用户密码 主机名Oracle 服务器 IP 端口1521 服务名Oracle 服务名点击测试确认连接成功。5.4 创建 Migration RepositorySQL Developer 迁移功能需要在 Oracle 中创建迁移仓库用于保存捕获模型和转换模型。操作路径工具 - 迁移 - 存储库(档案资料库)管理 - 创建存储库(档案资料库)选择 Oracle 目标连接或专门的迁移仓库连接。建议测试迁移阶段可以直接放在测试库中。正式迁移前建议单独创建迁移仓库用户避免污染业务用户(我单独创建了迁移仓库用户)。创建存储库(档案资料库) 完成后会在迁移仓库用户下新建很多表和触发器等。5.5 启动迁移向导操作路径工具 - 迁移 - 迁移迁移向导主要步骤选择 Migration Repository。创建迁移项目名称。选择 SQL Server 源库连接。选择要迁移的数据库对象。捕获 SQL Server 对象。转换为 Oracle 对象。检查转换结果。生成 Oracle DDL。执行 DDL 到 Oracle 目标用户。选择是否迁移数据。我勾上了截断数据后续发现没作用一直报错 无法禁用约束条件: 数据移动 先批量把目标库约束都禁用也不行最后放弃了使用spoon_kettle数据迁移INSERT INTO MIGRLOG(REF_OBJECT_ID, PHASE, SEVERITY, PARENT_LOG_ID, LOGTEXT, REF_OBJECT_TYPE, CONNECTION_ID_FK, LOG_DATE) VALUES (:REF_OBJECT_ID, :PHASE, :SEVERITY, :PARENT_LOG_ID, :LOGTEXT, :REF_OBJECT_TYPE, :CONNECTION_ID_FK, :LOG_DATE) 12, 2数据移动, 31000, 42, 5无法禁用约束条件: 数据移动, 612, 72, 82026-08-17 17:08:46.622数据迁移步骤注意点使用spoon_kettle数据迁移直接把jtds-1.3.1.jar 放到spoon根目录下 lib文件夹重启spoon就能连接上sqlserver库了不用额外的配置。默认某个节点执行报错后面都不执行了可以把节点设置为执行失败继续后面的但是这个工作不好操作1个1个设置太麻烦我是出现了就把start连接失败节点的下一个节点失败的这个节点如果确实需要这个数据迁移就手动处理。中途出现了4-5次失败也就是4-5张表需要手动处理。设置为执行失败继续后面的选择无条件的但是这个界面没找到全局设置的。