IT七剑客 IT七剑客
首页
wresource
郭霖
孤寒者
IT邦德
沉默王二
老麦
stackoverflow
GitHub (opens new window)
首页
wresource
郭霖
孤寒者
IT邦德
沉默王二
老麦
stackoverflow
GitHub (opens new window)
  • 基础数据库文章

    • Docker容器迁移Oracle到MySQL
      • ⛳️ 1. 创建专用网络
      • ⛳️ 2. Oracle 12C部署
        • ✨ 2.1 镜像下载
        • ✨ 2.2 容器创建
        • ✨ 2.3 创建业务用户
        • ✨ 2.4 监听启动
      • ⛳️ 3. MySQL8部署
        • ✨ 3.1 容器创建
        • ✨ 3.2 参数设置
        • ✨ 3.3 登陆MySQL
      • ⛳️ 4. kettle迁移Oracle到MySQL
        • ✨4.1 部署kettle
        • ✨4.2 Oracle端数据校验
        • ✨4.3 迁移Oracle到MySQL
        • ✨4.4 迁移后MySQL数据验证
    • PostgreSQL大总结
    • 想学明白MySQL,得先捋一捋核心的文件
    • Oracle超全SQL,细节狂魔
    • MySQL8.0新特性抢先看,性能又双叒提升了
    • Docker大总结
    • BI 系统中看似很冗余的快照表存在的意义
  • IT邦德 数据库
  • 基础数据库文章
IT邦德
2022-07-25
目录

Docker容器迁移Oracle到MySQL

我正在参与掘金技术社区创作者签约计划招募活动,点击链接报名投稿 (opens new window)。

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10年DBA工作经验
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程😜😜😜
擅长Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理。
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️
1
2
3
4
5

# 前言

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


# ⛳️ 1. 创建专用网络

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

在这里插入图片描述

# ⛳️ 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 ;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# ✨ 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
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

在这里插入图片描述

# ⛳️ 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[[.ID]]\t[[.Names]]\t[[.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';
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

在这里插入图片描述

# ✨4.3 迁移Oracle到MySQL

复制多表 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 完成后,会自动生成如下的执行树: 在这里插入图片描述 点击run,开始执行即可: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

# ✨4.4 迁移后MySQL数据验证

在这里插入图片描述 在这里插入图片描述

作者:IT邦德 链接:https://jeames.blog.csdn.net 来源:CSDN 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

编辑 (opens new window)
#数据库#IT邦德
上次更新: 2023/01/22, 14:02:45
PostgreSQL大总结

PostgreSQL大总结→

最近更新
01
Coding 102 Writing code other people can read
02-26
02
Kotlin Flow响应式编程,StateFlow和SharedFlow
02-05
03
Kotlin Flow响应式编程,操作符函数进阶
02-05
更多文章>
Theme by Vdoing | Copyright © 2022-2023 IT七剑客 | MIT License
  • 闽ICP备2021006579号-4
  • 闽公网安备 35012102500470号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式