详情

首页手游攻略 Oracle数据库移植到KingbaseES的全流程实用指南

Oracle数据库移植到KingbaseES的全流程实用指南

佚名 2026-09-15 13:10:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Oracle数据库移植到KingbaseES的全流程”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

目录
  • 前言
  • 一、迁移前必知:为什么选择KingbaseES?
  • 二、 迁移前准备
    • 2.1 拿到 Oracle 数据库的相关信息
    • 2.2 查询Oracle 数据库编码方式
    • 2.3 看表数据量大小
    • 2.4 检查数据库日期格式
  • 三、设置 KingbaseES 的 Oracle 兼容开关
    • 3.1 nls_length_semantics 参数
    • 3.2 default_with_oids:OID 伪列开关
  • 四、KDTS数据的离线迁移实战
    • 4.1 新建源数据库连接
    • 4.2 新建目标数据库连接
    • 4.3 新建迁移任务
    • 4.4 选择模式
    • 4.5 选择迁移对象
    • 4.6 设置参数
  • 五、查看迁移报告及问题处理
    • 结语

      前言

      在这个场景下,在国产化替代浪潮下,将Oracle数据库迁移至KingbaseES(金仓数据库)已成为众多企业的选择。 KingbaseES作为Oracle兼容版数据库,借助原生兼容大量Oracle特性,大幅降低了迁移难度。下面我们就来从Oracle到KingbaseES的完整迁移流程,给各位带来一份从前期准备到落地验证的实战指南,助力企业实现平滑、高效的数据库国产化升级。

      一、迁移前必知:为什么选择KingbaseES?

      落到代码里,在启动迁移前,首先要明确KingbaseES的Oracle兼容优势——这是降低迁移成本的核心前提。根据官方文档,KingbaseES在关键层面实现了高度兼容:

      • 数据类型全覆盖:原生兼容Oracle的NUMBER、VARCHAR2、DATE、ROWID等基础类型,以及RECORD、%TYPE、关联数组等复杂PL/SQL类型,无需修改数据结构定义。
      • SQL与PL/SQL兼容:兼容TRUNCATE、层次查询、闪回查询、MERGE等Oracle特有SQL语句,同时兼容IF-THEN-ELSE、FORALL、自治事务等PL/SQL语法,甚至兼容DBMS_SQL、DBMS_LOB等常用内置包。
      • 工具链适配:提供KSQL(类似SQL*PLUS)、KStudio(类似SQL Developer)等客户端工具,迁移过程中无需改变运维习惯。

      落到代码里,轻松来说,大部分Oracle应用只需“少量修改甚至零修改”,即可在KingbaseES上运行——这是选择它的核心原因。

      二、 迁移前准备

      从实现思路看,Oracle到KingbaseES的迁移同时非“直接拷贝数据”,而是遵循“准备-迁移-测试”的标准化流程。

      2.1 拿到 Oracle 数据库的相关信息

      理解这一步时,迁移前,应拿到源数据库Oracle 服务名及迁移的数据规模信息。其中,前者用来 PL/SQL Developer 工具的登录操作,后者用来估算数据迁移时间和设计迁移方案。

      1. Oracle 数据库基本信息
        拿到源Oracle 数据库的:
        a. IP 地址;
        b. 实例名;
        c. 网络服务端口号;
        d. 用户名/密码。
      • 在目标KingbaseES 上:
        从实现思路看,a. 新建与源Oracle 用户(如 scott)同名的用户(scott);
        从实现思路看,b. 新建与源Oracle(如 ORCL)同名的数据库(ORCL),属主为scott;
        理解这一步时,c. 新建与源Oracle(与用户名相同 t)同名的模式scott,属主为 scott。

      2.2 查询Oracle 数据库编码方式

      select userenv('language') from dual;
       USERENV('LANGUAGE')
       SIMPLIFIED CHINESE_CHINA.ZHS16GBK
      【KingbaseES初始化设置编码方式】
      --encoding=GBK(支持GBKUNICODEASCII)

      2.3 看表数据量大小

      查看当前用户在Oracle中的表大小,按从大到小排序(单位GB)

      select segment_name,bytes/1024/1024/1024 fromuser_segmentswheresegment_type='TABLE'order by
       bytesdesc ;
       XFJXX16.046875
       XFRXX7.779296875
       PCK 7.4375
       BLFSXX 5.0625
       XFSXXX 2.3125
       DFGZXX 1.3359375
       FJB 0.53125
       TSJXX0.078125

      2.4 检查数据库日期格式

      时间的默认格式为:ISO,MDY

      在设置文件中添加:datestyle=’ISO,YMD’修改为年月日的格式(99会改为1999)

      在某项目中迁移数据时遇到:服务器报错,迁移工具中断,迁移停滞

      • 在这个场景下,oracle数据库中有日期“0099-09-3000:00:00”,迁移工具输出为“99-09-3000:00:00”,KingbaseES中将99识别为月份报错:ERROR:date/timefieldvalueoutofrang

      --即使没有报错也会出现错误
      set ora_date_sytle=true;
       CREATE TABLET_DATE(COLDATE);
       INSERT INTO T_DATEVALUES('11-10-1010:10:10');
       SELECT *FROMT_DATE;
       COL--------------------
      2010-11-1010:10:10
       (1 row)

      三、设置 KingbaseES 的 Oracle 兼容开关

      落到代码里,在 Oracle 数据库向 KingbaseES 迁移的过程中,为确保两者在功能和数据存储上的兼容性,需根据实际场景对 KingbaseES 目的数据库进行 Oracle 兼容设置。以下将针对需重点设置的会话级兼容参数展开说明,明确各参数的作用、设置依据及注意事项。

      3.1 nls_length_semantics 参数

      在这个场景下,该参数的核心作用是设定char类型字段的默认单位(byte或char),同时标识符的最大长度也会以该参数值为单位 —— 若参数值为char,标识符最大长度为 63 个char;若为byte,则最大长度为 63 个byte。

      在这个场景下,从设置依据来看,KingbaseES 中nls_length_semantics参数的默认值为CHAR,但迁移时需确保其与待迁移的 Oracle 数据库参数值保持一致。Oracle 数据库中,char类型的byte/char属性默认值由NLS_LENGTH_SEMANTICS参数决定,可借助如下所示 SQL 语句查询该参数值:

      select value from nls_database_parameters where parameter = 'NLS_LENGTH_SEMANTICS';

      若未修改可能会出现:迁移 char 类型时,由于数据库存储的类型不同,导致迁移的数据存在多余空格的情况。

      3.2 default_with_oids:OID 伪列开关

      从实现思路看,KingbaseES 的 OID 伪列可兼容 Oracle 的 ROWID 伪列。所以,如果Oracle 移植对象有 ROWID 伪列,则建议用OID伪列替代。

      四、KDTS数据的离线迁移实战

      理解这一步时,在完成上述准备工作以后,我们就能够采用KDTS进行数据的离线迁移了,KDTS提供了两种形态(BS、SHELL),能够根据需进行选择,我们在这里就给大家介绍BS的oracle迁移的具体步骤。

      4.1 新建源数据库连接

      落到代码里,新建源库数据库连接。新建数据库连接界面如下所示,填写数据源信息,包括:“连接名称”、“数据库
      类型”、“数据库版本”、“服务器地址”、“端口”、“用户名”、“密码”、“数据库”、“连接参
      数”。

      4.2 新建目标数据库连接

      在这个场景下,新建目标数据库连接。新建数据库连接界面如下所示,填写数据源信息,包括:“连接名称”、“数据
      库类型”、“数据库版本”、“服务器地址”、“端口”、“用户名”、“密码”、“数据库”、“驱
      动”、“URL”、“连接参数”。

      4.3 新建迁移任务

      从实现思路看,KDTS 采用向导页的方式指导用户新建迁移任务,轻松易用,用户依次设置“选择数据源”-“选择模
      式”-“选择迁移对象”-“设置参数”,即可更快设置一个迁移任务。

      • 选择数据源

      理解这一步时,填写自定义任务名称(任务名称不能重复),选择“源数据库”和“目标数据库”,或者选择“新建数据源”后采用

      4.4 选择模式

      根据我们的数据迁移所需选择对应模式(如需选择模式在系统模式中可选中“包含系统模式”复选
      实际处理时,框)的表、视图、序列、函数、存储过程、程序包、同义词。当模式较多时也能够借助左上方的查
      落到代码里,询框进行检索。请您至少选择一种模式,否则将收到错误提示,以至于不能完成新建任务。

      4.5 选择迁移对象

      在这个场景下,借助已选模式选择我们需迁移数据的表,模式较多时可在已选模式搜索框内输入模式名关键字进行更快检索。

      理解这一步时,可迁移此模式下全部表,也能够指定或排除部份表,当你选择“包含指定表”或“排除指定表”
      理解这一步时,时,请借助“从列表选择”、“从文件导入”或者在输入框内输入表名将数据添加到包含列表
      中,如未添加数据,则会提示错误导致无法进行下一步同时完成新建任务。

      结合项目来看,当我们点击“包含指定表”时也可选择多种方式。可直接在输入框内填写表名,多个表用“,”分割,回车确认;“从列表选择”可在模式中选择指定表;如您要“从文件导入”,可点击“下载导入模板”,根据导入模板规则填写,随后从文件导入该模板。当您需“排除指定表”时,同指定部份表相同操作,但结果相反。

      实际处理时,从列表选择表时,可选择对应模式、检索表名关键字、数据条数限制进行更快检索对应的表。点击
      结合项目来看,“添加”按钮后加入到已选列表,当您想要移除部份表时能够选择对应的表点击“移除”按钮取消
      表。选择完成后点击确定。

      4.6 设置参数

      结合项目来看,迁移工具给我们提供了一系列设置参数用来迁移方案的个性化设置,满足多种迁移场景。设置参数分为“迁移设置”、“数据类型映射”、“线程设置”三个方面。

      • 表默认处理方式
        实际处理时,包含“建表/重建表”“导入数据”两个复选框选项,用来选择迁移到KingBaseES数据库时,是否需建表或重建表,以及是否仅迁移表结构而不迁移数据。默认是全选。
      • 表排序依据
        落到代码里,可对迁移的表进行排序,排序方式有“按行数和大字段大小交替”“行数”“大小”,默认是按行数和大字段大小交替。
      • 表数据读取和写入
        实际处理时,能为表数据的读取和写入制定规则,可操作的选项有“源库游标读取记录数”(默认是100)、“批量写入目标库记录数”(默认是1000)、“每次批量提交大小”(默认是100MB)、“LOB字段预读取大小”(默认是4000Byte)。
      • 大表拆分阈值依据
        用来对大表进行拆分迁移,可设置拆分的界限。
      • 非对象设置
        结合项目来看,其中有“主键”“检查约束”“唯一约束”“外键”“索引”“触发器”“自动转换对象名”等选项,可根据需求选择是否迁移这些非对象数据,默认是全选。
      • 数据库连接数设置
        能够限制迁移程序对源数据库和目标数据库的最大连接数,默认是100。
      • 执行迁移任务
        在这个场景下,可将此任务作为预迁移任务点击“保存”,或者作为执行任务点击“保存同时迁移”。
      • 迁移完成
        迁移结束“状态”栏显示“成功”,则迁移任务成功。
      • 迁移失败
        在这个场景下,迁移结束“状态”栏显示“失败”,则迁移任务失败。失败后可点击详情查看日志有助于解决问题。

      五、查看迁移报告及问题处理

      从实现思路看,迁移完成后,我们需确认执行结果,包括迁移数据量,是否有错误发生,能够借助迁移日志和迁移结果进行查看。

      • 在这个场景下,“迁移日志”打印迁移任务执行后的日志,具体可分为“系统日志”、“Error日志”、“Info日志”。
      • 理解这一步时,“迁移结果”功能的工作区包括“任务执行批次”、“迁移对象”、“总数”、“成功数”、“失败数”、“略过数”、“操作”。您能够查看历史迁移任务执行的每次记录,以及每次迁移的对象、成功数、失败数、查看失败任务的错误日志。

      结语

      理解这一步时,从 Oracle 到 KingbaseES 的迁移,不仅是技术层面的替换,更是企业国产化转型的重要一步。在迁移过程中我们最好按照一下步骤,遵循标准化流程、借助兼容优势、做好测试调优,即可实现 “平稳迁移、无缝衔接”。

      • 提前评估:摸清 Oracle 源库的对象和不兼容点,避免迁移中 “踩坑”;
      • 工具优先:善用 KDTS/KFS 等官方工具,减少手动操作,提升效率;
      • 充分测试:功能和性能测试必须覆盖所有业务场景,确保上线后稳定运行。

      结合项目来看,以上就是Oracle数据库移植到KingbaseES的全流程的详细内容,更多关于Oracle移植到KingbaseES的资料请关注脚本之家其它相关文章!

      您可能感兴趣的文章:

      • MySQL数据库迁移到KingbaseES的完整指南
      • KingbaseES中的MySQL案例实战讲解
      • MySQL迁移KingbaseESV8R2的实现步骤
      • KingbaseES金仓数据库:ksql 命令行从建表到删表实战(含增删改查)
      • 国产数据库KingbaseES安装与采用方法详解
      • mysql切到国产数据库KingbaseES后的SQL区别

      相关资讯
      点击查看更多
      游戏推荐
      推荐专题
      热门阅读
      推荐下载