阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

借助OGG完成Oracle到MySQL的数据迁移

517次阅读
没有评论

共计 5747 个字符,预计需要花费 15 分钟才能阅读完成。

现在有个任务是需要把 Oracle 的数据迁移到 MySQL,因为就涉及到了几个表,所以我最先想到了使用 spool 把 Oracle 的数据导成 txt 文件,然后再 load 进去 MySQL。非常遗憾的是,我的有一个表有 110 个字段,并且有 160 万的数据,始终就只能倒进一部分数据,最后由于时间问题,没有继续尝试,然后打算用 golden gate 完成任务。

我们知道 golden gate 主要就在于几个进程的配置,安装很简单,解压缩就可以,下面重点讲解各个进程的配置问题。
整体迁移的思路以及注意事项:
首先在 oracle 端和 mysql 端安装上 OGG,安装很简单,然后在 oracle 源端和目标端配置好 mgr(端口需要一致), 然后在源端配置上抓取进程,在目标端配置上 replicate 进程(只运行一次即可),然后在源端使用 DEFGEN 命令做映射文件,并把文件传到 mysql 端相应目录下。启动源端的抓取进程即可实现数据库初始化,也就完成了数据迁移。
注意事项和相关报错:
1,oracle 到 mysql 的 ogg 属于异构的 ogg, 需要借助 DEFGEN 命令生成一个映射文件,也就是两个表的映射关系,并把文件放到目标端相应位置下。否则会报错 WARNING OGG-01194 EXTRACT task RINIG1 abended : Could not find definition for INFOSERVICE.T_MEMBER_INFO_SUM
2,在源端配置抓取进程,需要注意的是:初始化数据库过程需要一个的抓取进程,之后保持数据同步也需要一个抓取进程,这两个抓取进程是有区别的,然后目的端也需要两个 replicate 进程,一个用来初始化数据库,一个用来实时同步数据。
3,注意 oracle 字段默认是区分大小写的,但是 mysql 默认是不区分的。如下:
mysql> select login_id from T_MEMBER_INFO where login_id = ‘SHFRONT’;
+———-+
| login_id |
+———-+
| shfront |
| SHFRONT |
+———-+
2 rows in set (0.81 sec)
需要这样修改,让 mysql 对大小写敏感。
mysql> alter table T_MEMBER_INFO modify login_id varchar(100) binary;
mysql> select login_id from T_MEMBER_INFO where login_id = ‘SHFRONT’;
+———-+
| login_id |
+———-+
| SHFRONT |
+———-+
1 row in set (0.78 sec)
如果 mysql 的主键是 login_id, 那么可能会遇到下面这个报错,主键冲突,真正的原因是:mysql 字段值默认是不区分大小写
报错:WARNING OGG-01004 Aborted grouped transaction on ‘liuwenhe.T_MEMBER_INFO_SUM’, Database error 1062 ([SQL error 1062]Duplicate entry ‘shandongchaoyue’ for key ‘PRIMARY’
 
从 oracle 转到 MySQL 的 OGG,在使用 mysql 过程中,会遇到很多不同于 oracle 的问题,初始化数据的时候总是报主键冲突,但是这些数据都是从同样表结构的 oracle 数据库中导出来的,当然主键也是一样的。
查看了一下数据文件,发现存在很多数据只是大小写不一样,如’goolen,‘GOOLEN’,‘Goolen’这样的数据,
其实 MySQL 中,字段值默认是不区分大小写的,也就是说插入值‘abc’和 ’ABC‘是等价的,
下面展示具体的配置:
源端 oracle 抓取进程配置:
[oracle@master2 ggs]$ cd   /u01/OGG_linux/ggs 
[oracle@master2 ggs]$ ./ggsci
Oracle GoldenGate Command Interpreter for Oracle
Version 11.2.1.0.1 OGGCORE_11.2.1.0.1_PLATFORMS_120423.0230_FBO
Linux, x64, 64bit (optimized), Oracle 11g on Apr 23 2012 08:32:14
 
Copyright (C) 1995, 2012, Oracle and/or its affiliates. All rights reserved.
 
1,GGSCI (master2) 1>  create  subdirs  
Creating subdirectories under current directory /u01/OGG_linux/ggs
Parameter files                /u01/OGG_linux/ggs/dirprm: already exists
Report files                   /u01/OGG_linux/ggs/dirrpt: created
Checkpoint files               /u01/OGG_linux/ggs/dirchk: created
Process status files           /u01/OGG_linux/ggs/dirpcs: created
SQL script files               /u01/OGG_linux/ggs/dirsql: created
Database definitions files     /u01/OGG_linux/ggs/dirdef: created
Extract data files             /u01/OGG_linux/ggs/dirdat: created
Temporary files                /u01/OGG_linux/ggs/dirtmp: created
Stdout files                   /u01/OGG_linux/ggs/dirout: created,
2,登录数据库 
GGSCI (master2) 3> dblogin userid ogg,password ogg
Successfully logged into database.
 
3,添加需要同步的用户到 ogg
开启 scott 用户下所有表的附加日志
GGSCI (WebServer) 3> add trandata infoservice.*
2013-03-08 11:02:33  WARNING OGG-00869  No unique key is defined for table ‘BONUS’.
All viable columns will be used to represent the key, but may not guarantee
uniqueness.  KEYCOLS may be used to
define the key.
Logging of supplemental redo data enabled
for table SCOTT.BONUS.
Logging of supplemental redo data enabled
for table SCOTT.DEPT.
Logging of supplemental redo data enabled
for table SCOTT.EMP.
2013-03-08 11:02:34  WARNING OGG-00869  No unique key is defined for table
‘SALGRADE’. All viable columns will be used to represent the key, but may not
guarantee uniqueness.  KEYCOLS may be
used to define the key.
Logging of supplemental redo data enabled
for table SCOTT.SALGRADE.
4,GGSCI (WebServer) 4> info trandata scott.*
Logging of supplemental redo log data is
enabled for table SCOTT.BONUS.
Columns supplementally logged for table
SCOTT.BONUS: ENAME, JOB, SAL, COMM.
Logging of supplemental redo log data is
enabled for table SCOTT.DEPT.
Columns supplementally logged for table
SCOTT.DEPT: DEPTNO.
Logging of supplemental redo log data is
enabled for table SCOTT.EMP.
Columns supplementally logged for table
SCOTT.EMP: EMPNO.
Logging of supplemental redo log data is
enabled for table SCOTT.SALGRADE.
Columns supplementally logged for table
SCOTT.SALGRADE: GRADE, LOSAL, HISAL.
 
3,GGSCI (master2) 3>edit params mgr
PORT 7839
4,GGSCI (master2) 3> start  mgr
 
5,GGSCI (master2) 3>info  mgr
Manager is running (IP port
WebServer.7839).
 
1. 抓取进程
GGSCI (oracle3) 10>add extract  ext_1,sourceistable ####sourceistable 代表直接从表中读取数据
 
GGSCI (oracle3) 10> view params ext_1
 
extract ext_1
setenv (NLS_LANG=AMERICAN_AMERICA.ZHS16GBK)
userid goldengate@cbl , password ogg123456
rmthost 192.168.0.12,mgrport 7839
rmttask replicat,group rinig1
table INFOSERVICE.T_MEMBER_INFO;
2.DEFGEN 命令生成的映射文件。
1)创建 DEFGEN 工具的参数文件;
GGSCI (oracle3) 3> view params defgen
defsfile ./dirdef/source.def, purge
userid ogg@rman_cbl1 , password ogg
TABLE INFOSERVICE.T_PUBLISH_INFO;
TABLE INFOSERVICE.T_PUBLISH_ZBXX;
TABLE INFOSERVICE.T_MEMBER_INFO;
TABLE INFOSERVICE.T_MEMBER_INFO_FUBIAO1;
TABLE INFOSERVICE.T_MEMBER_INFO_SUM;
TABLE INFOSERVICE.T_MEMBER_MY;
TABLE INFOSERVICE.T_MEMBER_MY_INFO;
TABLE INFOSERVICE.T_PUBLISH_INFO_SUM_TONGJI;
TABLE INFOSERVICE.USER_REGIST_LS_FAIL;
TABLE INFOSERVICE.USER_REGIST_LS;
2))运行 DEFGEN 工具生成数据定义文件
进入 GGSCI 安装目录下,命令行执行:
[oracle@oracle3 ogg]$./defgen paramfile dirprm/defgen.prm
3) 把生成的文件 scp 到目标端相应文件下:
[oracle@oracle3 ogg]scp /home/oracle/ogg/dirdef/source.def root@192.168.0.12:/files/ogg/dirdef/source.def
 
目标端:replicate 配置:
GGSCI (db2) 1> add replicat rinig1,specialrun //specialrun 代表只运行一次
注意下面的 target liuwenhe.T_MEMBER_INFO
GGSCI (server02) 12> view params rinig1
 
replicat rinig1
sourcecharset ZHS16GBK
setenv (NLS_LANG=AMERICAN_AMERICA.zhs16gbk)
sourcedefs ./dirdef/source.def
sourcedb infoservice,userid ogg,password ogg
discardfile ./dirrpt/rinig1.dsc,purge
map infoservice.T_MEMBER_INFO, target liuwenhe.T_MEMBER_INFO REPERROR (1403, discard);
最后打开源端的抓取进程即可
 
GGSCI (oracle3) 3>start ext_1
GGSCI (oracle3) 3> view report ext_1 ### 查看输出结果
最后可以看日志:
ogg 错误日志
[root@server02 dirdef]# find / -name ggserr.log
[root@server02 dirdef]#tail -f /files/ogg/ggserr.log
总结:
oracle 到 mysql 的 ogg 需要借助 defgen 命令生成的映射文件, 并把文件传到目标端相应位置下,才能完成数据库初始化,用于初始化的 replicate 进程,只会运行一次。注意字符集问题,就是源端的抓取进程配置的字符集和目标端 replicate 配置的字符集必须是一样的,否则可能会导致只导进去一部分数据。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-03/141916.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计5747字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7873102
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛NAS-4:飞牛NAS安装istore旁路由,家庭网络升级的最佳实践

星哥带你玩飞牛 NAS-4:飞牛 NAS 安装 istore 旁路由,家庭网络升级的最佳实践 开始 大家好我是...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...