目录
前言
不同的数据库因为数据类型、SQL语句不同,导致异构数据库的迁移一直以来都是比较复杂的操作,DBA一般会借助各种迁移工具来实现迁移,简化迁移操作。南大通用也开发了GMTK迁移工具,经常用于不同事务型数据到GBase 8s的迁移,包括主流的事务型数据Oracle、DB2、SQLserver、Mysql、PostgreSQL,还支持国产数据库达梦DM7、DM8,人大金仓Kingbase、Kingbase8等,本文以具体案例说明如何使用迁移工具实现从Oracle迁移到GBase 8s的用法。
一、GBase Migration Toolkit 迁移工具介绍
GBase Migration Toolkit (简称GMTK)迁移工具是南大通用提供的一种实现异构数据库进行数据迁移的图形化工具。
目前支持的源数据库有10种:
Oracle、SQLServer、DM7、DM8、DB2、MySQL、Kingbase、Kingbase8、PostgreSQL 和 GBase 8s
目前支持的目标数据库: GBase 8s
二、获取GBase Migration Toolkit 迁移工具安装包
在gbase官网(www.gbase.cn)可以下载GMTK工具
具体方法:官网–>服务与下载–>GBase 8s V8.8–> 工具
下载地址:
https://www.gbase.cn/download/gbase-8s-1?category=TOOLKIT
根据操作系统选择合适的GBase8sMTK工具版本,因为本机是windows系统,所以下载 GBase8sMTK_V8.9_1.._1_WIN10_x86_64.zip (版本可能会随时更新,选合适版本即可)
三、从Oracle迁移到GBase 8s环境准备
1 环境说明:
Oracle 版本 :Oracle 11GR2 (服务器IP:172.16.9.172)
GBase 8s版本:GBase 8s Express Edition (服务器为云环境IP:139.9.241.217,9088端口映射为22118)
迁移工具版本:GBase8sMTK_V8.9_1.7.1_1_WIN10_x86_64.zip
2 启动oracle和启动oracle监听进程
启动oracle
$ sqlplus / as sysdba
SQL> startup
复制
如果没启动oracle监听进程的,可以启动一下
[oracle@ora172:/home/oracle]$ lsnrctl start LSNRCTL for Linux: Version 11.2.0.4.0 - Production on 22-SEP-2023 23:04:21 Copyright (c) 1991, 2013, Oracle. All rights reserved. Starting /u01/app/oracle/product/11.2.0/db/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.4.0 - Production System parameter file is /u01/app/oracle/product/11.2.0/db/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/ora172/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora172)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.4.0 - Production Start Date 22-SEP-2023 23:04:22 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/11.2.0/db/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/ora172/listener/alert/log.xmlListening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=ora172)(PORT=1521))) The listener supports no services The command completed successfully
复制
如果已启动,可忽略此步骤。
3 确认GBase 8s服务已启动
检查GBase 8s服务状态
# su - gbasedbt
Last login: Fri Sep 22 13:46:02 CST 2023 on pts/0
$ onstat -
Your evaluation license will expire on 2024-08-29 00:00:00
On-Line -- Up 23 days 04:12:33 -- 2171620 Kbytes
复制
On-Line 表示已启动。如果没启动,可以使用 oninit -vy 命令启动。
$ oninit -vy
复制
如果已启动,可忽略此步骤。
4 Oracle 数据准备
在Oracle数据库中,使用hr_main.sql脚本创建HR示例数据库
主要步骤:
- 将 hr_main.sql 脚本文件拷贝到/home/oracle目录下面
- sqlplus 执行 hr_main.sql 脚本文件
- HR数据库中有7张表,查看表名和数据条数
[oracle@ora172:/home/oracle]$ sqlplus / as sysdba @hr_main.sql
SQL> alter user hr identified by "hr";
User altered.
SQL> conn hr/hr
SQL> select table_name from user_tables;
TABLE_NAME
------------------------------
COUNTRIES
JOB_HISTORY
EMPLOYEES
JOBS
DEPARTMENTS
LOCATIONS
REGIONS
7 rows selected.
SQL> select count(*) from EMPLOYEES;
COUNT(*)
----------
107
SQL> exit
复制
hr_main.sql脚本下载链接:
https://pan.baidu.com/s/1MvIVikeu-Eg1bbNX1BIhtg
hr_main.sql具体操作网上资料很多,不清楚的话自行查询即可。
5 GBase 8s环境准备
连接到GBase 8s数据库,创建hr数据库,不需要创建目标表。
使用命令如下:
[gbasedbt@peixun-0057 ~]$ onversion
Main Version: GBase 8s Express Edition
[gbasedbt@peixun-0057 ~]$ onstat -
Your evaluation license will expire on 2024-08-29 00:00:00
On-Line -- Up 23 days 03:46:36 -- 2171620 Kbytes
[gbasedbt@peixun-0057 ~]$ dbaccess - -
Your evaluation license will expire on 2024-08-29 00:00:00
> create database hr in datadbs1 with buffered log;
Database created.
> Database hr;
Database closed.
Database selected.
> info tables;
Table name
复制
三、使用GMTK迁移表结构
1.解压迁移工具安装包
在windows电脑上解压缩MTK安装包到一个非中文目录下,解压缩后可直接使用
注意:请不要解压到含中文目录下
2.启动GMTK
双击 Migration.exe ,启动 GMTK工具
3. 新建一个任务
在主界面上单击“新建任务”,进入步骤一,任务名称填写为oracle28s,单击“下一步”
4.迁移数据库选择
进入步骤二,源数据库类型选择“Oracle”,目标数据库类型选择“GBase8s”,单击“下一步”
5.填写源数据库配置信息
进入步骤三,填写源数据库Oracle配置信息,主要填写主机名、端口号、用户名、密码、实例名等,配置完毕后,单击“下一步”
6.填写目标数据库配置信息
进入步骤四,填写目标数据库GBase 8s配置信息,主要填写主机名、端口号、用户名、密码、数据库名等,选择新创建的hr数据库,因为8s集群安装的是兼容VC模式,不用勾选“指定VC登录”选项。
配置完毕,单击“下一步”
7.指定迁移表设置
进入步骤五,选择“迁移表对象”,选择迁移表结构,勾选迁移数据,单击“详细设置”按钮,进行表的详细设置。
表的详细设置页面
选择要迁移的表
默认全选所有表,不用修改。如果只迁移个别表,则勾选需要导入的表名即可,不迁移的表不选择即可。
设置完成如下图
全部表设置完成之后,单击“确定”按钮返回上一步窗口。
注意
8s数据库,一般迁移表对象时,先迁移表结构,后迁移数据,主要是确保建表成功再迁移数据,对于数据量不大的表,可以同时迁移表结构和数据。
8.指定迁移表结构
单击下一步按钮,进入步骤六,进行“数据类型映射设置”,要注意oracle支持的数据类型跟8s支持的数据类型很多不一样,每一种类型要选择合适的8s数据库类型对应,如果选择不合适,可能会导致迁移表失败。
字段类型映射配置建议
oracle的字符类型,例如:char、varchar2、clob等设置成 varchar,尽量不选text
blob对应blob,尽量不选longblob类型
number类型,如果数据为整数,选择int类型;数据为小数,选择double类型
单击“完成”按钮,则任务创建成功。
9.启动任务
任务创建成功后,选择左侧的oracle看到了新建任务名称,双击后,则右侧出现表的迁移任务(未开始)
点击【启动任务】开始迁移,直到显示完成,显示表结构迁移成功。
10.到8s查看迁移的表
到GBase 8s中查看hr数据库中的表是否已存在,在企业管理器中查看hr数据库下面有7个表,点开表,可以查看里面的表数据。
[gbasedbt@peixun-0057 ~]$ dbaccess - -
Your evaluation license will expire on 2024-08-29 00:00:00
> database hr;
Database selected.
> info tables;
Table name
countries departments employees job_history
jobs locations regions
> select count(*) from countries;
(count(*))
25
1 row(s) retrieved.
复制
hr 库下面出现表名称,表示表结构迁移完毕。
注意
如果迁移表结构出现个别表错误,可查询具体出错信息,例如数据类型错误,需要修改任务,改好后再次进行迁移。一般建议在8s中删除hr库,然后新建hr,重新迁移表结构。
总结
GMTK迁移工具较多用于异构事务型数据库间的数据迁移,例如从oracle迁移到GBase 8s数据库,事务型数据库的数据量一般不大,使用迁移工具很方便。
评论
