说明:这篇文章将介绍如何配置oracle到mysql的ogg同步

源端:ip-192.168.56.11 数据库类型-oracle 11.2.0.4
目标端:ip-192.168.56.71 数据库类型-mysql 5.7.25

1. 解压并准备目录

(源端)
su - oracle
mkdir -p /home/oracle/ogg1/
tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /home/oracle/ogg1

(目标端)
su - mysql
mkdir -p /home/mysql/ogg2/
tar -xvf ggs_Linux_x64_MySQL_64bit.tar -C /home/mysql/ogg2

创建socket软链接,mysql ogg默认使用/tmp/mysql.sock
查看mysql socket的位置
(root@localhost)[(none)]> show variables like 'socket';
+---------------+-----------------------------+
| Variable_name | Value |
+---------------+-----------------------------+
| socket | /opt/mydata/data/mysql.sock |
+---------------+-----------------------------+

ln -s /opt/mydata/data/mysql.sock /tmp/mysql.sock

2. 创建目录,用户

(源端)
cd /home/oracle/ogg1
./ggsci
GGSCI> create subdirs

# 在sqlplus创建管理ogg需要的数据库用户ggs
SQL> create user ggs identified by ggs;
SQL> grant connect,resource,select any dictionary,select any table,alter any table,flashback any table to ggs;
SQL> grant insert any table,update any table,delete any table to ggs;
SQL> grant execute on dbms_flashback to ggs;
SQL> grant execute on utl_file to ggs;

# 授予用户查看数据字典的权力
# 同步的表在哪个用户下,哪个用户就要拥有查看数据字典的权力,源端使用tom做测试
SQL> create user tom identified by tom;
SQL> grant connect,resource,select any dictionary to tom;

# 打开追加日志数据模式
SQL> alter database add supplemental log data;
SQL> select supplemental_log_data_min from v$database; #须yes

(目标端)
cd /home/mysql/ogg2
./ggsci
GGSCI> create subdirs

# 在mysql创建管理ogg需要的数据库用户ggt
(root@localhost)[(none)]> create user ggt@'%' identified by 'ggt';
(root@localhost)[(none)]> grant all on *.* to ggt@'%';
(root@localhost)[(none)]> flush privileges;

3. 准备测试用的表

(源端)
# ogg的表必须有主键
SQL> create table tom.test1(id number primary key, name varchar2(30), ctime date);

(目标端)
(root@localhost)[(none)]> create database hello;
(root@localhost)[(none)]> use hello;
(root@localhost)[hello]> create table test2(id int primary key, name varchar(30), ctime datetime);

4. 配置define文件,异构的ogg需要这步

(源端)
GGSCI> edit params oracle_to_mysql
------------------------------------
defsfile dirdef/oracle_to_mysql.prm
userid ggs,password ggs
table tom.test1;

新开一个窗口
[root@orasingle ~]# su - oracle
[oracle@orasingle ~]$ cd ogg1
[oracle@orasingle ogg1]$ ./defgen paramfile dirprm/oracle_to_mysql.prm
[oracle@orasingle ogg1]$ scp dirdef/oracle_to_mysql.prm mysql@192.168.56.71:/home/mysql/ogg2/dirdef

5. 添加需要同步的表

(源端)
# 这里是添加表的附加日志
GGSCI> dblogin userid ggs, password ggs
GGSCI> add trandata tom.test1
GGSCI> info trandata tom.test1

6. 添加checkpoint表

(目标端)
# 续传的功能
GGSCI> dblogin sourcedb hello, userid ggt, password ggt
GGSCI> edit params ./GLOBALS
#或使用vi编辑参数文件,注意GLOBALS是在ogg的主目录下面,使用绝对路径或者./GLOBALS,不能使用edit params GlOBALS,否则会进到dirprm目录下面
--------------------------------------------------------------------------
checkpointtable hello.checkpoint

GGSCI> view params ./GLOBALS #查看参数文件
GGSCI> add checkpointtable hello.checkpoint #在数据库中创建检查点记录表
GGSCI> info checkpointtable hello.checkpoint

7. 配置管理进程的参数文件

(源端)
GGSCI> edit params mgr
--------------------------------------------------------------------
port 7788
autorestart extract *,waitminutes 2,retries 5
purgeoldextracts /home/oracle/ogg1/dirdat/*,usecheckpoints,minkeephours 1,frequencyminutes 30

GGSCI> view params mgr

(目标端)
GGSCI> edit params mgr
--------------------------------------------------------------------
port 7788
autorestart extract *,waitminutes 2,retries 5
purgeoldextracts /home/mysql/ogg2/dirdat/*,usecheckpoints,minkeephours 1,frequencyminutes 30

GGSCI> view params mgr
# 参数解释autorestart-自动重启抽取进程,purgeoldextracts-定期清理trail文件

8. 配置抽取进程

(源端)
8.1 编辑抽取参数文件
GGSCI> edit params ext1
-------------------------------------------------------------------------------------------
extract ext1
setenv(ORACLE_SID=orcl) #填源端的sid
setenv(NLS_LANG=AMERICAN_AMERICA.ZHS16GBK) #填源端的字符集
userid ggs,password ggs
rmthost 192.168.56.11,mgrport 7788 #填源端的ip,抽取的文件放到哪个地方
exttrail /home/oracle/ogg1/dirdat/et
table tom.test1;

8.2 添加抽取进程
GGSCI> add extract ext1, tranlog, begin now

8.3 添加抽取进程需要的文件
GGSCI> add exttrail /home/oracle/ogg1/dirdat/et,extract ext1,megabytes 100 #设置trail文件最大100m,默认10m

9. 配置投递进程

(源端)
9.1 编辑投递参数文件
GGSCI> edit params pump1
------------------------------------------------------------------------
extract pump1
PASSTHRU #这是参数适用于源端和目标端表结构一致且没有过滤行
RMTHOST 192.168.56.71, MGRPORT 7788 #目标端ip
RMTTRAIL /home/mysql/ogg2/dirdat/p1 #目标端文件的目录
TABLE tom.test1;

9.2 添加投递进程
GGSCI> add extract pump1,exttrailsource /home/oracle/ogg1/dirdat/et, begin now

9.3 添加投递到远程的文件
GGSCI> add rmttrail /home/mysql/ogg2/dirdat/p1, extract pump1,megabytes 100

10. 配置复制进程

(目标端)
10.1 编辑复制参数文件
GGSCI> edit params rep1
-----------------------------------------------------------------
replicat rep1
sourcecharset ZHS16GBK #填源端的字符集
targetdb hello, userid ggt, password ggt
sourcedefs /home/mysql/ogg2/dirdef/oracle_to_mysql.prm
discardfile /home/mysql/ogg2/dirdat/rep1.dsc,append
MAP tom.test1, TARGET hello.test2;
--------------------------------------------------------------------

10.2 增加复制进程
GGSCI> add replicat rep1,exttrail /home/mysql/ogg2/dirdat/p1
#注意这一步可能提示下面错误
ERROR: No checkpoint table specified for ADD REPLICAT.
解决办法:退出重新登陆,再执行那步操作
GGSCI> exit
[mysql@mysqla ogg2]$ ./ggsci
GGSCI> dblogin sourcedb hello, userid ggt, password ggt
GGSCI> add replicat rep1,exttrail /home/mysql/ogg2/dirdat/p1

11. 启动进程

源端
GGSCI> start mgr
GGSCI> start ext1
GGSCI> start pump1
目标端
GGSCI> start mgr
GGSCI> start rep1

在源端查看进程状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:09
EXTRACT RUNNING PUMP1 00:00:00 00:00:02

在目标端查看进程状态
GGSCI> info all
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
REPLICAT RUNNING REP1 00:00:00 00:00:04

12. 测试同步与否

(源端)
SQL> insert into test1 values(25,'小豹子加油',sysdate);
SQL> commit;

(目标端)
(root@localhost)[hello]> select * from test2;
+----+-----------------+---------------------+
| id | name | ctime |
+----+-----------------+---------------------+
| 25 | 小豹子加油 | 2019-04-21 11:44:06 |
+----+-----------------+---------------------+

同步完成,中文显示也没有问题

13. 记录报错的日志文件

/home/oracle/ogg/ggserr.log

14. 总结

14.1从ogg到mysql有字段类型的变化,比如oracle中date类型就是“年月日 时分秒”类型,到了mysql中只有“年月日”,所以mysql中需要定义成datetime类型。还有mysql中字符类型是默认不区分大小写的,oracle中明确区分大小写,所以在同步时如果字符类型上面有唯一索引,还会报错。
14.2异构的ogg比同构的ogg还需要define文件,定义表的结构。

ogg - 从oracle到mysql的同步的更多相关文章

  1. 配置ogg从Oracle到PostgreSQL的同步复制json数据

    标签:goldengate postgresql oracle json 测试环境说明 Oracle:Windows 8.1 + Oracle 12.2.0.1.0 + GoldenGate 12.3 ...

  2. 配置ogg目录索引-oracle与mysql的双向同步步骤

    以下几篇文章描述了利用ogg对oracle与mysql进行双向同步的配置过程以及注意事项,欢迎参考. 配置ogg异构oracle-mysql(1)基础环境配置 http://www.cnblogs.c ...

  3. Oracle to MySQL Goldengate实现增量迁移

    第一部分:安装和基本配置 一.环境 两台rhel 6.4虚拟机,分别异构oracle到mysql数据库同步测试Ip:192.168.0.23 部署oracle 11.2.0.4,goldgate 12 ...

  4. 基于OGG的Oracle与Hadoop集群准实时同步介绍

    版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/220 来源:腾云阁 https://www.qclou ...

  5. ogg实现oracle到sql server 2005的同步

    一.源端(oracle)配置1.创建同步测试表create table gg_user.t01(name varchar(20) primary key);create table gg_user.t ...

  6. OGG 从Oracle备库同步数据至kafka

    OGG 从Oracle备库同步数据至kafka Table of Contents 1. 目的 2. 环境及规划 3. 安装配置JDK 3.1. 安装jdk 3.2. 配置环境变量 4. 安装Data ...

  7. Oracle使用goldengate分别向Oracle和mysql双路的单向复制

    一.Oracle分别向Oracle和mysql双路的单向复制是在: ORACLE-mysql的单向复制基础上做的.http://blog.csdn.net/q947817003/article/det ...

  8. OGG同构(ORACLE-ORACLE)、异构(ORACLE-MYSQL)同步配置及错误解析

    环境:11.2.0.3(已安装数据库实例)+OEL5.7 192.168.1.55 zlm sid:zlm11g 192.168.1.60 zlm2 sid:zlm11g 一.安装软件,配置环境,创建 ...

  9. OGG 18.1 for mysql远程捕获测试

    Ogg18.1 remote capture要求mysql为5.7版本,只能从linux远程捕获mysql on windows or linux,且不支持DDL捕获.支持远程mysql为commun ...

随机推荐

  1. SpringBoot启动方式讲解和部署war项目到tomcat9

    1.SpringBoot启动方式讲解和部署war项目到tomcat9简介:SpringBoot常见启动方式讲解和部署war项目Tomcat 1.ide启动 2.jar包方式启动 maven插件: &l ...

  2. Mysql 插入中文错误:Incorrect string value: '\xE7\xA8\x8B\xE5\xBA\x8F...' for column 'course' at row 1

    create table my_user (    id tinyint(4) not null auto_increment,    account varchar(255) default nul ...

  3. linux挂载硬盘以及卸载硬盘

    1.在vmware添加硬盘 2.输入fdisk -l 查看新增加的硬盘 3.分区初始化 4.指定文件系统 5.修改fstab文件 fstab: 6.刷新验证 mount -a 挂载定义在/etc/fs ...

  4. 『PyTorch』第五弹_深入理解autograd_上:Variable属性方法

    在PyTorch中计算图的特点可总结如下: autograd根据用户对variable的操作构建其计算图.对变量的操作抽象为Function. 对于那些不是任何函数(Function)的输出,由用户创 ...

  5. 算法导论 之 红黑树 - 删除[C语言]【转】

    转自:https://blog.csdn.net/qifengzou/article/details/17608863 作者:邹祁峰 邮箱:Qifeng.zou.job@hotmail.com 博客: ...

  6. Python创建、删除桌面、启动组快捷方式的例子分享

    一.Python创桌面建快捷方式的2个例子 例子一: 代码如下: import osimport pythoncomfrom win32com.shell import shell    from w ...

  7. mysql caching_sha2_password异常分析

    使用navicat连接mysql报错 解决办法: 通过命令行登录mysql后,输入: alter user 'root'@'localhost' IDENTIFIED WITH mysql_nativ ...

  8. 802.11 af 要点

    (1)TVWS工作在 VHF/UHF 频段,欧洲为 470-790MHZ, 美国为 54-698MHZ. (2)GDB(Geolocation Database):地理位置数据库,与其他802.11协 ...

  9. Android数据存储:Shared Preferences

    Android数据存储之SharedPreferences 在Android系统中提供了多种存储技术.通过这些存储技术可以将数据存储在各种存储介质上, Android 为数据存储提供了如下几种方式:1 ...

  10. 各浏览器下使用 OBJECT 元素和 EMBED 元素嵌入 Flash 存在差异

    标准参考 OBJECT 元素定义了一个嵌入的对象.其引入的初衷是取代 IMG 和 APPLET 元素.不过由于安全等各方面原因以及缺乏浏览器支持,这一初衷并未实现.浏览器的对象支持依赖于对象类型.然而 ...