首页 > 数据库 >金仓 KDTS 初探:Oracle 到 KingbaseES 一键迁移

金仓 KDTS 初探:Oracle 到 KingbaseES 一键迁移

时间:2024-12-03 17:00:09浏览次数:9  
标签:金仓 12 KDTS 数据库 system 数据表 lucifer Oracle

大家好,这里是公众号 DBA学习之路,分享一些学习国产数据库路上的知识和经验。

社群交流

为了给大家提供一些技术交流的平台,目前已成立的技术交流群:

  • Oracle 数据库交流群
  • 国产数据库交流群
  • Linux 技术交流群
  • ChatGPT 4o 免费体验群

需要进群(均已超过 200 人,需要邀请)可以添加号主微信:Lucifer-0622,备注对应的群名即可。

目录

前言

大家期待的 金仓数据库产品体验官第三期:KES数据迁移 活动又来了,这次是体验金仓 KES V9 KDTS 数据迁移工具,听说可以一键迁移,咱也不知道是真是假,我来试试看到底怎么个事儿!

介绍

数据库数据迁移平台(KDTS: Kingbase Data Transformation Service)是为用户提供 Oracle、Mysql、SQLServer、Gbase、PostgreSQL、DM、KingbaseES 数据库数据迁移到 KingbaseES 数据库的数据迁移工具。

数据库版本支持

源端数据库版本支持:

目标数据库版本支持:

源端数据库迁移对象支持:

安装包下载

KDTS 迁移工具内置在 KES V9 安装包中:

直接前往官网下载 KES V9 安装包即可:

下载后需要进行安装,安装教程可参考:

金仓数据库 KingbaseES V9 单机安装指南

KES V9 软件安装完成后在 ${KES_HOME}/ClientTools/guitools/KDts/目录下可以看到两个文件夹:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts]$ ll
总用量 0
drwxrwxr-x 9 kingbase kingbase 108 12月  3 12:01 KDTS-CLI
drwxrwxr-x 8 kingbase kingbase  77 12月  3 12:02 KDTS-WEB

KDTS 数据库迁移工具的产品形态有以下两种:

  • KDTS-WEB(BS 版):通过浏览器以可视化界面方式设置配置项,完成数据迁移。
  • KDTS-CLI(SHELL 版):通过手动修改配置文件的方式设置配置项,完成数据迁移。

用户可以根据不同的场景来选择使用哪种方式来迁移数据库。

部署 BS 版

初次接触,为了方便使用,我打算部署 BS 版来进行迁移使用。

进入 KDTS-WEB 文件夹中的 bin 目录下启动 KDTS 网页迁移工具:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin]$ ./startup.sh 
------------------------------------------------------------------------
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
------------------------------------------------------------------------
================================================ 2024-12-03_13-32-40 ================================================
kdts-app-console v1.0.3.322
jar name: kdts-app-console-1.0.3.322.jar
base path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB
bin path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin
config path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/conf
log path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/logs/kdts-app-console_2024-12-03_13-32-40.log
java path: /KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/jdk
## ...
## 省略
## ...
See "../logs/kdts-app-console_2024-12-03_13-32-40.log" or use the command-line "tail -f ../logs/kdts-app-console_2024-12-03_13-32-40.log" for more detail.

根据提示查看 kdts 启动日志:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin]$ tail -f ../logs/kdts-app-console_2024-12-03_13-32-40.log
2024-12-03 13:32:47.899  INFO 41010 --- [           main] com.kingbase.kdts.datasource.b           : Load JDBC driver[B] -- mysql 8.0:
2024-12-03 13:32:47.899  INFO 41010 --- [           main] com.kingbase.kdts.datasource.b           :   file:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/drivers/mysql/mysql-connector-j-8.1.0.jar
2024-12-03 13:32:47.958  INFO 41010 --- [           main] c.k.k.console.config.DriverInitListener  : Load Mysql 8.0 driver end
2024-12-03 13:32:47.958  INFO 41010 --- [           main] c.k.k.console.config.DriverInitListener  : Load Pg12 driver begin
2024-12-03 13:32:47.959  INFO 41010 --- [           main] com.kingbase.kdts.datasource.b           : Load JDBC driver[B] -- postgresql 12:
2024-12-03 13:32:47.959  INFO 41010 --- [           main] com.kingbase.kdts.datasource.b           :   file:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/drivers/postgresql/postgresql-42.6.0.jar
2024-12-03 13:32:47.966  INFO 41010 --- [           main] c.k.k.console.config.DriverInitListener  : Load pg12 driver end
2024-12-03 13:32:48.028  INFO 41010 --- [           main] c.k.kdts.DataMigrationApplication        : Started DataMigrationApplication in 6.215 seconds (JVM running for 7.664)
2024-12-03 13:32:48.033  INFO 41010 --- [           main] c.k.kdts.DataMigrationApplication        : Version: 1.0.3.322 Build Time: 2024-08-26 (Core Version: 1.0.5.395)
2024-12-03 13:32:48.033  INFO 41010 --- [           main] c.k.kdts.DataMigrationApplication        : Open 'http://localhost:54523' using a browser to access the application. 

使用网页链接:http://192.168.6.96:54523 在浏览器中打开 KDTS 迁移工具即可(这里的 IP 请替换成自己环境的地址):

KDTS 网页端的默认登录用户名及密码:kingbase/kingbase,登录后界面如下:

关闭 KDTS:

[kingbase@kesv9:/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/bin]$ ./shutdown.sh 
/KingbaseES/V9/ClientTools/guitools/KDts/KDTS-WEB/pid 41010

上述简单演示了 KDTS 的启动和关闭。

KDTS 迁移

本文演示使用 KDTS 进行 Oracle 19C 到 KingbaseES V9 的数据库迁移步骤。

源数据库连接

首先需要连接源端数据库:

填写源端数据库信息,测试连通性:

源端数据库添加成功:

查看源端数据库信息:

-- 数据库字符集
SQL> select * from nls_database_parameters where parameter in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

PARAMETER                      VALUE
------------------------------ --------------------
NLS_NCHAR_CHARACTERSET         AL16UTF16
NLS_CHARACTERSET               AL32UTF8

-- 查看用户数据
SQL> SELECT count(*) FROM dba_objects WHERE owner='LUCIFER';

  COUNT(*)
----------
        34

SQL> SELECT object_type,count(*) FROM dba_objects WHERE owner='LUCIFER' GROUP BY object_type;

OBJECT_TYPE               COUNT(*)
----------------------- ----------
INDEX                           12
TABLE PARTITION                 12
TABLE                           10

SQL> SELECT sum(bytes) FROM dba_segments WHERE owner='LUCIFER';

SUM(BYTES)
----------
 102563840

目标数据库连接

连接目标端数据库:

KES 数据库中创建一个 Lucifer 数据库以及模式:

[kingbase@kesv9:/home/kingbase]$ ksql test system
输入 "help" 来获取帮助信息.

test=# create database lucifer encoding utf8;
CREATE DATABASE
test=# \c lucifer system
您现在以用户名"system"连接到数据库"lucifer"。
lucifer=# create schema lucifer;
CREATE SCHEMA
lucifer=# \l lucifer;
                             数据库列表
  名称   | 拥有者 | 字元编码 |  校对规则   |    Ctype    | 存取权限 
---------+--------+----------+-------------+-------------+----------
 lucifer | system | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | 
(1 行记录)

lucifer=# \dn lucifer
   架构模式列表
  名称   | 拥有者 
---------+--------
 lucifer | system
(1 行记录)

以上模式用户迁移源端数据库 lucifer 用户所建。

填写好目标端数据库信息,测试连通性:

目标端数据库添加成功:

迁移任务新建

配置好源和目标端数据库之后,就可以创建迁移任务,开始迁移:

选择刚刚配置好的数据库:

这里选择需要迁移的模式,或者直接搜索需要的模式:

Oracle 默认自带的模式我们不需要,直接搜索 LUCIFER 模式(记住一定要大写):

选择所有对象进行迁移(记得要手动滑动一下,后面还有一些可以勾选的对象):

点击下一步继续(这里我之前已经创建 lucifer 模式,可以直接覆盖):

迁移所有对象:

这一步可以配置很多参数来适配迁移任务,还可以通过 KDMS 工具来做转换,这里我打算不做任何修改,看一下会有什么效果:

保存并迁移,查看迁移进度:

可以看到短短 16s 就迁移成功了(虽然我的源数据库很简单):

通过概览也可以查看 KDTS 的使用情况:

但是貌似没有看到迁移后数据比对的功能,还需要加强功能啊!

简单查看一下目标端迁移情况:

lucifer=# \dt lucifer.*
                      关联列表
 架构模式 |         名称          |  类型  | 拥有者 
----------+-----------------------+--------+--------
 lucifer  | basic_info            | 数据表 | system
 lucifer  | customers             | 数据表 | system
 lucifer  | departments           | 数据表 | system
 lucifer  | employees             | 数据表 | system
 lucifer  | inventory             | 数据表 | system
 lucifer  | order_details         | 数据表 | system
 lucifer  | orders                | 数据表 | system
 lucifer  | products              | 数据表 | system
 lucifer  | sales_stats           | 分区表 | system
 lucifer  | sales_stats_p_initial | 数据表 | system
 lucifer  | sales_stats_sys_p230  | 数据表 | system
 lucifer  | sales_stats_sys_p231  | 数据表 | system
 lucifer  | sales_stats_sys_p232  | 数据表 | system
 lucifer  | sales_stats_sys_p233  | 数据表 | system
 lucifer  | sales_stats_sys_p234  | 数据表 | system
 lucifer  | sales_stats_sys_p235  | 数据表 | system
 lucifer  | sales_stats_sys_p236  | 数据表 | system
 lucifer  | sales_stats_sys_p237  | 数据表 | system
 lucifer  | sales_stats_sys_p238  | 数据表 | system
 lucifer  | sales_stats_sys_p239  | 数据表 | system
 lucifer  | sales_stats_sys_p240  | 数据表 | system
 lucifer  | warehouses            | 数据表 | system
(22 行记录)

lucifer=# \di lucifer.*
                              关联列表
 架构模式 |         名称         |   类型   | 拥有者 |    数据表     
----------+----------------------+----------+--------+---------------
 lucifer  | sys_c007573_ff558803 | 索引     | system | basic_info
 lucifer  | sys_c007574_92f54b0a | 索引     | system | basic_info
 lucifer  | sys_c007577_ce3762de | 索引     | system | orders
 lucifer  | sys_c007579_7a852db8 | 索引     | system | customers
 lucifer  | sys_c007582_cef2ff36 | 索引     | system | products
 lucifer  | sys_c007584_8253185e | 索引     | system | order_details
 lucifer  | sys_c007587_c754cd3b | 索引     | system | employees
 lucifer  | sys_c007591_b91f3a42 | 索引     | system | departments
 lucifer  | sys_c007592_8ee53120 | 索引     | system | inventory
 lucifer  | sys_c007593_6d488ead | 索引     | system | inventory
 lucifer  | sys_c007595_afcc1d70 | 索引     | system | warehouses
 lucifer  | sys_c007604_a19f8c4c | 全局索引 | system | sales_stats
(12 行记录)

lucifer=# \dmv lucifer.*
Did not find any relation named "lucifer.*".
lucifer=# \ds lucifer.*
Did not find any relation named "lucifer.*".

可以看到 Oracle 数据库的对象已经成功迁移到 KingbaseES 数据库中。

写在最后

本文只是简单测试了金仓 KDTS 迁移工具的使用,初探感觉还不错,坑不是很多,当然真实体验还得需要更多生产实战进行检验!

如果有遗漏或者不足的地方,欢迎评论区补充或者投稿,感谢阅读!

往期精彩文章

达梦数据库安装最详细教程
一招教你学会达梦数据库的免密登录
一文讲透达梦数据库的大小写敏感
效率翻倍!达梦数据库 disql 使用技巧全攻略
达梦数据库参数配置与一键优化指南
达梦 AWR 报告快速上手指南
金仓数据库 KingbaseES V9 单机安装指南
KingbaseES KSQL 免密登录的几种方式
KingbaseES 控制文件冗余与恢复秘籍
金仓 KingbaseES RAC 入门指南
GBase 8a MPP 集群部署最佳实践
GBase 8a GDCA 认证课后练习题大全(题库)
南大通用 GBASE 8s V8.8 数据库最全安装指南
GBase 8s GDCA 认证课后练习题大全(题库)
GBase 8s 数据库巡检报告及一键巡检脚本
YashanDB 一键生成 AWR 报告
YashanDB 数据库安装部署
YashanDB 共享集群(YAC)入门指南与技术详解


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」

标签:金仓,12,KDTS,数据库,system,数据表,lucifer,Oracle
From: https://blog.csdn.net/m0_50546016/article/details/144215691

相关文章

  • oracle数据库的启动与关闭
    一.oracle数据库的启动过程启动实例(StarttheInstance)启动实例:一个Oracle数据库实例由内存结构和后台进程组成,启动实例时会加载这些内存结构和启动进程。实例是数据库的一个运行时环境,它包含了数据库的控制文件、数据文件、日志文件等。sqlplus/assysdba#以sysdb......
  • oracle rac新增、替换硬盘
    RAC添加硬盘一般的操作方法是将多路径识别到的硬盘直接添加到磁盘组,但是原有RAC磁盘组部署时操作有误,将磁盘划了分区,将分区添加到了磁盘组,导致使用上会对管理员运维时产生干扰误解,因此需要将所有磁盘的分区删除,使用磁盘的形式重新假如磁盘组。为原有DG新增一块临时中转硬盘然后......
  • oracle 数据常规操作(新手版)
    --脑补上面执行代码COMMIT;--提交事务放到最后结尾处DBMS_OUTPUT.PUT_LINE('固定资产数据更新成功!');EXCEPTION--拦截异常WHENOTHERSTHEN--判断异常类型ROLLBACK;--出现异常则回滚事务DBMS_OUTPUT.PUT_LINE('固定资产数据更新失败......
  • 使用DataGrip连接Oracle数据库造测试数据
    文章目录前言DataGrip连接Oracle数据库连接数据库构成操作数据库造测试数据总结前言软件测试中,当涉及到对特定规则的验证时,常常需要我们在数据库中构造合适的数据。以航空公司为例,航段数与会员等级之间存在着明确的关联规则,测试这一规则需要一定的航段数,我们就需要......
  • 【实战】Oracle基础之重做日志文件(REDO)的6种dump方法
    关于Jady:★工作经验:近20年IT技术服务经验,熟悉业务又深耕技术,为业务加持左能进行IT技术规划,右能处理综合性故障与疑难杂症;★成长历程:网络运维、主机/存储运维、程序/数据库开发、大数据运维、数据库运维、数据管理;★擅长技术:Oracle/MySQL/PGSQL/SQLServer/ClickHouse/Elastic......
  • 深入理解Oracle DB的锁和闩
    1.引言本文深入介绍OracleDB的锁和闩。2.OracleDB锁的基本概念2.1定义与作用锁是Oracle数据库用于控制并发访问的一种机制。它用于防止多个事务同时对同一数据进行不一致的操作,确保数据的完整性和一致性。例如,当一个事务正在更新一行数据时,通过加锁可以防止其他......
  • oracle-日常操作
    查看表空间大小点击查看代码SELECTa.tablespace_name"表空间名",total"表空间大小",free"表空间剩余大小",(total-free)"表空间使用大小",total/(1024*1024*1024)"表空间大小(G)",free/(1024*1024*1024)"表空间剩余大小(G)",......
  • Oracle系列---【关闭归档日志】
    1.问题数据库突然不能用了,排查后发现磁盘满了,清完归档日志之后,释放掉一半的磁盘空间,过一夜很快又满了,测试环境,为了节省资源决定关闭归档日志。2.查看是否开启归档日志#查看归档日志是否开启,使用sqlplus查询SQL>SELECTLOG_MODEFROMV$DATABASE;#或者SQL>ARCHIVELOGL......
  • Oracle生成awr报告操作步骤
    1、cmd命令窗口 以sysdba身份登录Oracle 2、执行@?/rdbms/admin/awrrpt命令,并选择报告类型为HTML。输入天数以选择生成报告的时间段,一般默认为最近7天。输入报告开始和结束时间对应的快照ID。输入报告名称,如awr.html,系统将自动生成并显示报告名。 3.查看AWR报告。AWR报告......
  • Oracle JDK 与 OpenJDK 下载安装配置教程
    OracleJDK与OpenJDK下载安装配置教程在Java开发领域,JDK(JavaDevelopmentKit)是开发Java应用程序的核心工具包。长期以来,OracleJDK一直是Java开发者的首选。然而,近年来,OpenJDK逐渐崭露头角,成为另一个重要的选择。本文将详细解释OracleJDK与OpenJDK之间的关系、渊源,并......