⛳️ 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的组成

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


下载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数据验证

