前言: 最近在进行一些去O的验证测试,之前测试过MTK迁移Oracle到MogDB,正好测试下Oracle到openGauss的迁移,于是做了如下测试,并整理记录成文,还望对此熟悉的朋友多多指正。
一、简介
MTK全称(Database Migration Toolkit),可进行Oracle/DB2/MySQL/openGauss/SqlServer/Informix等数据库异构迁移,支持Oracle/MySQL/DB2->openGauss的存储过程,函数,触发器,包迁移。MTK支持多种数据类型,并可在迁移时对性能进行调整,还支持结构和数据的分离。
本次采用恩墨公司MTK迁移工具,进行Oracle 11g到openGauss 5.0数据迁移测试。本次迁移采用MTK最新版 2.9.2(2023年7月30日)。MTK安装比较灵活,其可以安装在源端和目标端甚至可单独部署在一台可远程访问源端及目标端的单独服务器上。MTK迁移Oracle数据库时,需在部署MTK的服务器上安装Oracle客户端 Oracle Instant Client。
二、环境概述
本次进行Oracle 11g到openGauss 5.0.0 迁移测试,如进行生产迁移,还需考虑更多步骤细节,详情请查看恩墨MTK官方文档[https://docs.mogdb.io/zh/mtk/v2.0/overview]。
| 操作系统版本 | 内核版本 | 数据库类型 | 工具版本 | 字 符集 | 数据 库端口 | |
|---|---|---|---|---|---|---|
| 源端 | CentOS release 6.10 (Final) | 2.6.32-754.el6.x86_64 | 单机 | Oracle 11.2.0.4 | AMERICAN_AMERICA.AL32UTF8 | 1521 |
| 目标端 | CentOS Linux release 7.9.2009 (Core) | 3.10.0-1160.83.1.el7.x86_64 | 集群 | openGauss 5.0.0 | UTF8 | 26000 |
| MTK服务器 | CentOS Linux release 7.9.2009 (Core) | 3.10.0-1160.83.1.el7.x86_64 | 单机 | 2.9.2 |
三、安装部署
3.1 安装Oracle客户端
MTK迁移Oracle数据库,需要在部署MTK的服务器上安装Oracle 11g客户端,本次选择采用rpm包来安装客户端。
登录https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html选择下载Version 11.2.0.4.0版本客户端。
-- 1) 安装oracle-client rpm包
-- MTK服务器下载如下四个 oracle-client rpm包
[root@opensource-db soft]# ll
total 61400
-rw-r--r-- 1 root root 59865008 Jul 28 16:46 oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm
-rw-r--r-- 1 root root 610222 Jul 28 16:47 oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
-rw-r--r-- 1 root root 1564169 Jul 28 16:47 oracle-instantclient11.2-jdbc-11.2.0.4.0-1.x86_64.rpm
-rw-r--r-- 1 root root 828333 Jul 28 16:48 oracle-instantclient11.2-sqlplus-11.2.0.4.0-1.x86_64.rpm
-- root 用户安装rpm包
[root@opensource-db soft]# rpm -ivh oracle*.rpm
-- oracle-instantclient11.2*.rpm 包安装目录在 /usr/lib/oracle 目录下
[root@opensource-db ~]# cd /usr/lib
[root@opensource-db lib]# tree oracle/
oracle/
└── 11.2
└── client64
├── bin
│ ├── adrci
│ ├── genezi
│ └── sqlplus
├── lib
│ ├── glogin.sql
│ ├── libclntsh.so -> libclntsh.so.11.1
│ ├── libclntsh.so.11.1
│ ├── libheteroxa11.so
│ ├── libnnz11.so
│ ├── libocci.so -> libocci.so.11.1
│ ├── libocci.so.11.1
│ ├── libociei.so
│ ├── libocijdbc11.so
│ ├── libsqlplusic.so
│ ├── libsqlplus.so
│ ├── ojdbc5.jar
│ ├── ojdbc6.jar
│ ├── orai18n.jar
│ ├── orai18n-mapping.jar
│ ├── ottclasses.zip
│ └── xstreams.jar
└── network
└── admin
└── tnsnames.ora
6 directories, 21 files
-- 2) 配置环境变量
-- omm 用户
[omm@opensource-db ~]$ cat >>/home/omm/.bash_profile<<EOF
export LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib
export TNS_ADMIN=/usr/lib/oracle/11.2/client64/network/admin
EOF
[omm@opensource-db ~]$ source /home/omm/.bash_profile
-- 3) 创建sqlplus链接
-- 此时执行sqlplus会报错
[omm@opensource-db ~]$ sqlplus
-bash: sqlplus: command not found
# 问题原因,因为安装sqlplus客户端后,会链接生成/bin/sqlplus64
[omm@opensource-db ~]$ sqlplus64
SQL*Plus: Release 11.2.0.4.0 Production on Sun Jul 30 23:22:22 2023
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter user-name:
[omm@opensource-db ~]$ which sqlplus64
/bin/sqlplus64
[omm@opensource-db ~]$ ls -lrt /bin/sqlplus64
lrwxrwxrwx 1 root root 41 Dec 2 14:40 /bin/sqlplus64 -> /usr/lib/oracle/11.2/client64/bin/sqlplus
-- 解决办法,使用root用户执行如下操作
[root@opensource-db bin]# su - omm
Last login: Sun Jul 30 23:20:56 CST 2023 on pts/8
[omm@opensource-db ~]$ sqlplus
SQL*Plus: Release 11.2.0.4.0 Production on Mon Jul 31 10:09:30 2023
Copyright (c) 1982, 2013, Oracle. All rights reserved.
Enter user-name:
-- 此时可通过sqlplus使用tnsnames.ora字符串连接远程源端Oracle数据库。




