MTK迁移Oracle单库

一. Mtk安装

1.1     安装jdk

要求jdk版本在1.7以上

安装完jdk后将需要的数据库jdbc驱动拷贝到$JAVA_HOME/jre/lib/ext  目录下面

https://www.enterprisedb.com/advanced-downloads的跳转连接下载对应Oracle版本的第三方JDBC驱动ojdbc8.jar。放置于服务器的JAVA_HOME/jre/lib/ext下。

https://www.enterprisedb.com/advanced-downloads的跳转链接下载对应PostgreSQL版本的JDBC驱动postgresql-42.2.2.jar。放置于服务器JAVA_HOME/jre/lib/ext下

将上图驱动包包括 Oracle及postgresql的JDBC驱动包拷贝到此目录下

其中oracle驱动包为压缩包需要解压出来tar -xzvf ojdbc-full.tar.gz

驱动包不能发错位置,否则数据迁移不成功

查看java安装路径:

[ceresdata@test135]$ whereis java

java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz

[ceresdata@test135]$ ls -lrt /usr/bin/java

lrwxrwxrwx. 1 root root 22 Oct 29 10:23 /usr/bin/java -> /etc/alternatives/java

[ceresdata@test135]$ ls -lrt /etc/alternatives/java

lrwxrwxrwx. 1 root root 71 Oct 29 10:23 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/bin/java

ceresdata@test135]$ cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre

[ceresdata@test135 jre]$ ll

total 4

drwxr-xr-x. 2 root root  172 Oct 29 10:23 bin

drwxr-xr-x. 9 root root 4096 Oct 29 10:22 lib

[ceresdata@test135 jre]$ cd lib/

[ceresdata@test135 lib]$ cd ext/

将驱动放在此目录下

1.2获取安装包

http://sbp.enterprisedb.com/getfile.jsp?fileid=10872  下载地址

Linux版:edb-migrationtoolkit-51.0.1-1-linux-x64

https://www.enterprisedb.com/downloads/edb-migration-toolkit

也可以自己下载需要注册用户,下载链接会发到邮箱里面,Linux,Windows自选

使用xftp或者其他方法上传到安装postgresql数据库的服务器

chmod +x edb-migrationtoolkit-51.0.1-1-linux-x64.run

给安装包赋予可执行权限

./ edb-migrationtoolkit-51.0.1-1-linux-x64.run

执行安装

安装方式图形化安装或者命令行安装这里使用图像化安装:

这里是命令行安装

1.3安装MTK

[root@test128]./edb-migrationtoolkit-51.0.0-1-linux-x64.run 
Language Selection
 
Please select the installation language
[1] English - English
[2] Japanese - 日本語
[3] Simplified Chinese - 简体中文
[4] Traditional Chinese - 繁体中文
[5] Korean - 한국어
Please choose an option [1] : 
----------------------------------------------------------------------------
Welcome to the EDB Postgres Migration Toolkit Setup Wizard.
 
----------------------------------------------------------------------------
Please read the following License Agreement. You must accept the terms of this 
agreement before continuing with the installation.
 
Press [Enter] to continue:
Limited Use Software License Agreement
Version 2.9
 
IMPORTANT - READ CAREFULLY
 
...............................................
 
Please specify the directory where Migration Toolkit will be installed.
 
Installation Directory [/opt/edb/mtk]: 
 
----------------------------------------------------------------------------
Setup is now ready to begin installing Migration Toolkit on your computer.
 
Do you want to continue? [Y/n]: Y
 
----------------------------------------------------------------------------
Please wait while Setup installs Migration Toolkit on your computer.
 
 Installing EDB Postgres Migration Toolkit
 0% ______________ 50% ______________ 100%
 #########################################
 
----------------------------------------------------------------------------
EnterpriseDB is the leading provider of value-added products and services for 
the Postgres community.
 
Please visit our website at www.enterprisedb.com

二. MTK配置

2.1 修改MTK配置文件

Mtk配置文件路径,安装时候使用的是默认安装路径:/opt/edb/mtk/etc

进入此目录

vi toolkit.properties

SRC_DB_URL=jdbc:oracle:thin:@192.168.227.129:1521/orcl

SRC_DB_USER=C##TEST     //数据库账号

SRC_DB_PASSWORD=123456  //数据库密码

TARGET_DB_URL=jdbc:postgresql://localhost:5432/postgres

TARGET_DB_USER=ceresdata    //数据库账号

TARGET_DB_PASSWORD=123   //数据库密码

SRC_DB :源数据库库

TARGET_DB:目标数据库

配置完成:wq    保存退出

2.2 JDBC连接测试

这边因为中间出了很多问题,所以找了一个JDBC连接测试脚本,查看JDBC是否能够连接成功

此步骤不是必要步骤如果你操作顺利此步骤可以忽略不记

具体代码如下,图中标红部分为需要修改部分:

import java.sql.*;

public class test {

public static void main(String[] args) {

ResultSet rs = null;

Statement stmt = null;

Connection conn = null;

try {

Class.forName("oracle.jdbc.driver.OracleDriver");

/*String dbURL =

"jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.227.129)(PORT=1521)))"

+ "(CONNECT_DATA=(SERVICE_NAME=orcl.city.com)))";

*/

String dbURL = "jdbc:oracle:thin:@192.168.227.129:1521:orcl";

conn = DriverManager.getConnection(dbURL, "C##TEST", "123456");

System.out.println("连接成功");

} catch (ClassNotFoundException e) {

e.printStackTrace();

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

if (rs != null) {

rs.close();

rs = null;

}

if (stmt != null) {

stmt.close();

stmt = null;

}

if (conn != null) {

conn.close();

conn = null;

}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

如图所示JDBC连接Oracle数据库成功;

三. 数据库数据导出

3.1数据迁移及准备

确认配置无误,及驱动包存放地方没有错误进入到MTK安装目录:

新建数据存放目录:

cd /opt/edb/mtk/bin/

mkdir Migration    //数据存放目录需手动创建

在Oracle数据库中新建一张表(student),内容可以随意;

在/opt/edb/mtk/bin目录下执行此命令:

./runMTK.sh -targetdbtype postgres -sourcedbtype oracle -offlineMigration /opt/edb/mtk/bin/Migration/ C##TEST/

出现如下画面则代表成功:

[root@test128 bin]# ./runMTK.sh -targetdbtype postgres -sourcedbtype oracle -targetSchema public -offlineMigration /opt/edb/mtk/bin/Migration/  -singleDataFile -safeMode C##TEST

+++++++++++++++++++

gration/  -singleDataFile -safeMode C##TEST

Running EnterpriseDB Migration Toolkit (Build 51.0.1) ...

Source database connectivity info...

conn =jdbc:oracle:thin:@192.168.227.129:1521:orcl

user =C##TEST

password=******

Connecting with source Oracle database server...

Connected to Oracle, version 'Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining,

Oracle Database Vault and Real Application Testing options'

Importing redwood schema C##TEST...

Creating Tables...

Creating Table: COURSE

Creating Table: SCORE

Creating Table: STUDENT

Creating Table: TEACHER

Created 4 tables.

Loading table data in safe mode...

Loading Table: COURSE ...

[COURSE] Table Data Load Summary: Total Time(s): 0.006 Total Rows: 0

Loading Table: SCORE ...

[SCORE] Table Data Load Summary: Total Time(s): 0.002 Total Rows: 0

Loading Table: STUDENT ...

[STUDENT] Table Data Load Summary: Total Time(s): 0.006 Total Rows: 6

Loading Table: TEACHER ...

[TEACHER] Table Data Load Summary: Total Time(s): 0.002 Total Rows: 0

Data Load Summary: Total Time (sec): 0.016 Total Rows: 6 Total Size(MB): 0.0

Creating Constraint: PK_COURSE

Creating Constraint: PK_SCORE

Creating Constraint: PK_STUDENT

Creating Constraint: PK_TEACHER

Creating Constraint: FK_TNO

Creating Constraint: FK_CNO

Creating Constraint: FK_SNO

Schema C##TEST imported successfully.

Migration process completed successfully.

Migration logs have been saved to /home/ceresdata/.enterprisedb/migration-toolkit/logs

进入数据存放目录查看导出的数据

[ceresdata@test135 Migration]$ ll
total 20
-rw-rw-r-- 1 ceresdata ceresdata 635 Nov 5 10:51 mtk_public_constraint_ddl.sql
-rw-rw-r-- 1 ceresdata ceresdata 1620 Nov 5 10:51 mtk_public_data.sql
-rw-rw-r-- 1 ceresdata ceresdata 3287 Nov 5 10:51 mtk_public_ddl.sql
-rw-rw-r-- 1 ceresdata ceresdata 24 Nov 5 10:51 mtk_public_schema_ddl.sql
-rw-rw-r-- 1 ceresdata ceresdata 2654 Nov 5 10:51 mtk_public_table_ddl.sql

然后查看导出的Oracle数据验证一下

迁移数据:

cd /opt/edb/mtk/bin/Migration/

csql -h loclhost -p 5432 -d postgres -f mtk_public_ddl.sql
sql -h loclhost -p 5432 -d postgres -f mtk_public_data.sql

然后登录数据库验证一下

\d 查看表

select * from 表名; //查看表的内容是否和oracle数据库一致

MTK迁移Oracle单库的更多相关文章

  1. 干货 | RDS For SQL Server单库上云

    数据库作为核心数据的重要存储,很多时候都会面临数据迁移的需求,例如:业务从本地迁移上云.数据中心故障需要切换至灾备中心.混合云或多云部署下的数据同步.流量突增导致数据库性能瓶颈需要拆分-- 本文将会一 ...

  2. webservice 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下运行,将出现此问题

    最近做的项目中,应用服务器迁移到另外一台服务器,操作系统升级为win10,配置好IIS里的应用程序发布网站和Webservice网站后, 客户端程序调用Webservice出错: “尝试加载 Orac ...

  3. 通过Xtrabackup实现MySQL实例的全库备份与按需单库恢复

    在实际的生产环境中,为了管理方便,我们一般是通过 Xtrabackup实现实例的全库备份,即将实例上的所有数据库备份. 但是,考虑到快速恢复 我们常常面临的需求是快速还原单个数据库.针对初学者来说,网 ...

  4. oracle 单实例DG(搭建篇一)

    一,介绍 lodding... 二,安装前环境配置 01,依赖包的安装: yum install binutils-* yum install compat-libstdc++-* yum insta ...

  5. Oracle Study之--Oracle 单实例11.2.0.1.0升级到11.2.0.3.0

    Oracle Study之--Oracle 单实例11.2.0.1.0升级到11.2.0.3.0 系统环境: 操作系统:RedHat EL6(64位) Oracle:    Oracle 11gR2 ...

  6. 尝试加载 Oracle 客户端库时引发 BadImageFormatException

    尝试加载 Oracle 客户端库时引发 BadImageFormatException 工程师给计算机诊断,就像医生给病人诊断一样,很多同样的症状,可能是由多种截然不同的原因导致的.   最近进行C# ...

  7. 尝试加载 Oracle 客户端库时引发 BadImageFormatException。问题记录

    电脑是win8 64位,安装oracle 11g r2 64位的,谁知道一切装完毕后,打开项目却连不上oracle数据了...首先是pl/sql连不上,装了oracle服务器,应该是不用再装客户端,p ...

  8. “尝试加载 Oracle 客户端库时引发 BadImageFormatException”的解决方案

    今天要写个程序,环境是win8.1+ vs2012+ oracle,可是却出现了一个意想不到的问题: 异常!以下为数据库提示详细错误信息:尝试加载 Oracle 客户端库时引发 BadImageFor ...

  9. Windows C盘格式化或者同平台迁移oracle数据库

    我们知道如果是Linux 同平台迁移oracle数据库.只要是安全关闭了数据库,在新机器上创建用户组,配置了环境变量,将数据库安装目录拷贝到对应的目录就好用了. 一直在寻求Windows平台上这类的解 ...

随机推荐

  1. AI领域有什么职业?怎样才能在AI领域找到工作?

    AI领域是一个很吃香的行业,在这个行业中,很多人都是高薪的,而且有些学生为了以后能够接触到这个行业,都在大学的时候,学习这个专业,那么大家知道AI领域有什么职业吗?下面我们就来给大家讲解一下. 1.算 ...

  2. 聊一聊 MySQL 中的数据编辑过程中涉及的两阶段提交

    MySQL 数据库中的两阶段提交,不知道您知道不?这篇文章就简单的聊一聊 MySQL 数据库中的两阶段提交,两阶段提交发生在数据变更期间(更新.删除.新增等),两阶段提交过程中涉及到了 MySQL 数 ...

  3. ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'system.sysuser', bu

    问题:已经在settings.py文件中注册过app仍旧提示没有安装,并且使用makegirations命令时会抛出如下异常. ValueError: The field admin.LogEntry ...

  4. VirtualBox 虚拟机 从入门到入坑

                                                                                                        ...

  5. 安装Eclipse activity插件 报异常 Cannot complete the install because one or more required items could not be

    下载插件:Activiti Designer 5.17 2)安装过程中错误处理 a.错误: Cannot complete the install because one or more requir ...

  6. 如何在OpenStack中对云主机类型进行重新配置

    目标:很多用户在OpenStack启动一个虚拟机,选择了一个云主机配置类型,例如2CPU 4GB内存,使用了一段时间,感觉这个配置并不能满足需求,所以希望能够提高配置,那么OpeNStack的管理界面 ...

  7. Spring的aop思想

    1.AOP思想 (1)在解决中文乱码的应用: 一般情况下如果在Servlet中要解决中文乱码问题需要在每一个Servlet中书写解决乱码的代码,但是,在运用了过滤器之后,就不再需要每一个Servlet ...

  8. 死磕mysql(6)

    再写数据库作业的时候,发现了一个问题,如果存在主键外键的约束,数据就删不掉 --set foreign_key_checks=0; 关掉外键约束 用好了再打开 --set foreign_key_ch ...

  9. Java装箱和拆箱的基本概念及使用

    Java装箱和拆箱的基本概念及使用 要理解装箱和拆箱的概念,就要理解Java数据类型 装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质.int包装成Integer.float包装成Fl ...

  10. java设计模式6——代理模式

    java设计模式6--代理模式 1.代理模式介绍: 1.1.为什么要学习代理模式?因为这就是Spring Aop的底层!(SpringAop 和 SpringMvc) 1.2.代理模式的分类: 静态代 ...