Docker容器迁移Oracle到MySQL的实现方法

 更新时间:2022年07月20日 14:34:41   作者:IT邦德  
本文主要介绍了Docker容器迁移Oracle到MySQL的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言 Kettle是开源的 【TEL】 工具,JVAV编写,可以运行在多个平台,使用时有图形界面、命令脚本,还可以二次开发。用于数据抽取、转存等,非常方便

⛳️ 1. 创建专用网络

docker network create --subnet=168.66.6.0/24 db-network
[root@docker ~]# docker network inspect db-network --查看网络信息

⛳️ 2. Oracle 12C部署

✨ 2.1 镜像下载

docker pull registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201

✨ 2.2 容器创建

docker run -itd --name jemora1221 -h jemora1221
–net=db-network --ip 168.66.6.34
-p 1526:1521 -p 3396:3389
–privileged=true
registry.cn-shanghai.aliyuncs.com/techerwang/oracle:ora12c_12201 init

✨ 2.3 创建业务用户

[root@jeames ~]# docker exec -it jemora1221 bash
[root@jemora1221 /]# su - oracle
[oracle@jemora1221 ~]$ sqlplus / as sysdba
SYS@jem> startup
SYS@jem> show pdbs
    CON_ID CON_NAME                       OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
         2 PDB$SEED                       READ ONLY  NO
         3 JEMPDB                         MOUNTED
alter pluggable database JEMPDB open;
SYS@jem> select con_id,dbid,NAME,OPEN_MODE from v$pdbs;
SYS@jem> alter session set container=JEMPDB;
SYS@jem> create user jemmes identified by jemmes
SYS@jem> GRANT DBA to jemmes ;

✨ 2.4 监听启动

[oracle@jemora1221 ~]$ cd $ORACLE_HOME/network
[oracle@jemora1221 network]$ cd admin

## 配置TNS,后续连接数据库
[oracle@jemora1221 admin]$ vi tnsnames.ora
JEMPDB =
 (DESCRIPTION =
 (ADDRESS = (PROTOCOL = TCP)(HOST = jemora1221)(PORT = 1521))
 (CONNECT_DATA =
 (SERVER = DEDICATED)
 (SERVICE_NAME = JEMPDB)
 )
 )
 
 ## 监听启动
lsnrctl start
lsnrctl status

⛳️ 3. MySQL8部署

✨ 3.1 容器创建

docker run -d --name mysql8027 -h mysql8027 -p 3418:3306
–net=db-network --ip 168.66.6.35
-v /etc/mysql/mysql8027/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=jeames -e TZ=Asia/Shanghai
mysql:8.0.27

查看容器

[root@jeames ~]# docker ps --format “table {<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.ID}}\t{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.Names}}\t{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{.Status}}”
CONTAINER ID NAMES STATUS
043d1652404d jemora1221 Up 7 minutes
dc2989508b67 mysql8027 Up 23 seconds
7e6a53d71017 centos7.8 Up 20 minutes

✨ 3.2 参数设置

cat > /etc/mysql/mysql8027/conf/my.cnf << “EOF”
[mysqld]
default-time-zone = ‘+8:00'
log_timestamps = SYSTEM
skip-name-resolve
log-bin
server_id=80273418
character_set_server=utf8mb4
default_authentication_plugin=mysql_native_password
EOF

✨ 3.3 登陆MySQL

mysql -uroot -pjeames -h 168.66.6.35
create database jemdb;

⛳️ 4. kettle迁移Oracle到MySQL

✨4.1 部署kettle

Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行.
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

📢📢📢 kettle的组成

整个流程一共分为两步:一是安装JAVA环境;二是下载kettle的安装包

📢📢📢 安装AVA JDK

下载jdk安装包后打开文件开始安装

添加以下3个变量
【1】JAVA_HOME:刚刚Java安装的路径,我的是:C:\Program Files\Java\jdk1.8.0_231
【2】CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
【3】配置环境变量Path
双击Path,添加“%JAVA_HOME%\bin”;添加“%JAVA_HOME%\jre\bin”。
Win+R键弹出运行窗口,输入cmd,回车运行
分别输入“java -version”,“javac”进行测试,显示以下内容说明配置成功

📢📢📢 下载kettle安装包

这里我们选择7.1版本

下载完成解压到任意路径,打开文件夹,找到Spoon.bat,创建桌面快捷方式,打开

📢📢📢 数据库驱动包下载

将mysql驱动和oracle驱动放在kettle包下面的lib包下面即可。
MySQL JDBC 驱动下载
文件后缀名为 .tar.gz 的是Linux/IOS的压缩包;后缀为 .zip 的是Windows下的压缩包,
根据系统选择下载。
下载这个版本即可:mysql-connector-java-5.1.49-bin.jar
Oracle JDBC 驱动下载

📢📢📢 数据库连接

A.建立转换
在文件->新建装换,新建转换后在左边的主对象树中建立DB连接用以连接数据库

B.数据库连接MySQL

C.数据库连接Oracle 12C

✨4.2 Oracle端数据校验

## 创建测试表
 SYS@jem> conn jemmes/jemmes@JEMPDB    
@/home/oracle/demo_ora_create.sql
@/home/oracle/demo_ora_insert.sql

create table flower(
           id varchar2(32)  default sys_guid() primary key,
           flower_name varchar2(200),
           color varchar2(100),
           origin varchar2(200),
           moral varchar2(200),
           create_time timestamp default sysdate,
           update_time timestamp
    );
 JEMMES@JEMPDB> insert into flower(flower_name) values('dd');
--oracle所有表
JEMMES@JEMPDB> select * from tab;

--迁移前相关检查
col TABLE_NAME format a30
SELECT a.table_name,a.num_rows FROM dba_tables a where a.OWNER='JEMMES' ;
select object_type,count(*) from dba_objects where owner='JEMMES' group by object_type;
select object_type,status,count(*) from dba_objects where owner='JEMMES' group by object_type,status;
select sum(bytes)/1024/1024 from dba_segments where owner='JEMMES';

✨4.3 迁移Oracle到MySQL

复制多表

完成后,会自动生成如下的执行树:

点击run,开始执行即可:

✨4.4 迁移后MySQL数据验证

到此这篇关于Docker容器迁移Oracle到MySQL的实现方法的文章就介绍到这了,更多相关Docker迁移Oracle到MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 查看Docker容器的IP地址的四种方法

    查看Docker容器的IP地址的四种方法

    本文主要介绍了查看Docker容器的IP地址的四种方法,包括docker inspect命令、结合网络名称、在容器内执行命令、docker network inspect命令这四种,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • Docker中redis安装及测试教程

    Docker中redis安装及测试教程

    这篇文章主要介绍了Docker中redis安装及测试教程的一些基础方法和知识,为后续安装部署redis集群做准备,需要的朋友可以参考下
    2022-11-11
  • 一文教会你如何高效地搭建Docker私有仓库

    一文教会你如何高效地搭建Docker私有仓库

    Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的,这篇文章主要介绍了如何高效地搭建Docker私有仓库的相关资料,需要的朋友可以参考下
    2022-08-08
  • Navicat 连接服务器端中的docker数据库的方法

    Navicat 连接服务器端中的docker数据库的方法

    这篇文章主要介绍了Navicat 连接服务器端中的docker数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Docker Compose搭建Wordpress服务实现详解

    Docker Compose搭建Wordpress服务实现详解

    这篇文章主要为大家介绍了Docker Compose搭建Wordpress服务实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Docker安装Redis并使用Another Redis Desktop Manager连接的方法

    Docker安装Redis并使用Another Redis Desktop Manager连接的方法

    Redis 是一个使用C语言编写的、开源的(遵守 BSD 协议)、高性能的、支持网络、可基于内存亦可持久化的日志型、Key-Value的NoSQL数据库,这篇文章主要介绍了Docker安装Redis并使用Another Redis Desktop Manager连接,需要的朋友可以参考下
    2022-09-09
  • docker的WSL2报错解决步骤记录

    docker的WSL2报错解决步骤记录

    这篇文章主要介绍了在使用Docker时遇到的WSL2不支持的问题,包括错误代码、解决方法和常见问题,解决方法主要包括启用BIOS虚拟化、安装WSL2内核、设置默认WSL版本等步骤,需要的朋友可以参考下
    2025-04-04
  • 解读Dockerfile中CMD和ENTRYPOINT是否可以混着用

    解读Dockerfile中CMD和ENTRYPOINT是否可以混着用

    在Dockerfile中,CMD和ENTRYPOINT可以混着用,CMD指定默认命令,ENTRYPOINT指定启动命令,CMD可以被docker run命令的参数覆盖
    2025-03-03
  • Docker 安装及配置镜像加速的实现

    Docker 安装及配置镜像加速的实现

    这篇文章主要介绍了Docker 安装及配置镜像加速的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • docker compose 服务启动顺序控制的方法

    docker compose 服务启动顺序控制的方法

    这篇文章主要介绍了docker compose 服务启动顺序控制的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论