OGG:Oracle GoldenGate

目录

1.源库(100.100.100.210)与目标库(100.100.100.211)环境

源库环境:Oracle 11.2.0.1.0 + Red Hat Enterprise Linux Server release 6.4

目标库环境:Mysql 5.6.16 + Windows Server 2008 R2 Enterprise

2.源库Oracle操作

3.目标库Mysql操作

4.源端与目标端的配置

1)源端:ORACLE (100.100.100.210)

2)目标端:MYSQL(100.100.100.211)

5.验证数据是否实时同步

【自动同步成功】



1.源库(100.100.100.210)与目标库(100.100.100.211)环境

  • 源库环境:Oracle 11.2.0.1.0 + Red Hat Enterprise Linux Server release 6.4

  • 目标库环境:Mysql 5.6.16 + Windows Server 2008 R2 Enterprise

2.源库Oracle操作

(1)开启归档日志

oracle用户登录:
$ sqlplus / as sysdba--设置归档日志路径
SQL> alter system set log_archive_dest_1='location=/u01/archivelog';--关闭数据库
SQL> shutdown immediate--装载数据库
SQL> startup mount--启用数据库归档模式
SQL> alter database archivelog;--查看数据库归档信息
SQL> archive log list;
Database log mode             Archive Mode
Automatic archival            Enabled
Archive destination           /u01/arch--打开数据库
SQL> alter database open;

注:关闭附加日志命令:alter database noarchivelog;

(2)开启附加日志

SQL> select supplemental_log_data_min from v$database;SUPPLEME---------------NO
SQL> alter database add supplemental log data;
SQL> select supplemental_log_data_min from v$database;SUPPLEME---------------YES

(3)开启强制写日志

SQL> select force_logging from v$database;FOR------NO
SQL> alter database force logging;
SQL> select force_logging from v$database;FOR------YES

(4)创建同步用户并授予dba权限

  • 创建同步数据用的表空间 ggtbs ,表空间文件(datafile)的路径可使用下面的语句查询
SQL>select * from dba_data_files;

【说明datafile的路径是:/home/oracle/data/orcl/】

  • 创建表空间 ggtbs
SQL> create tablespace ggtbs datafile '/home/oracle/data/orcl/ggtbs01.dbf' size 200m autoextend on;
  • 创建用户ggs,密码为ggs,默认表空间为ggtbs,空间无配额无限增长
SQL> create user ggs identified by ggs default tablespace ggtbs quota unlimited on ggtbs;
  • 赋予ggs用户dba权限
SQL> grant connect,resource,create session,alter session to ggs;
SQL> grant select any dictionary,select any table, alter any table, create any table,flashback any table to ggs;
SQL> grant execute on dbms_flashback to ggs;
SQL> grant dba to ggs;

(5)GoldenGate源端的安装(oracle用户登录)

  • 下载安装OGG 安装包

官网地址(需要注册ORACLE账户):https://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.html

点击【 适用于 Linux x86-64 上 Oracle 的 Oracle GoldenGate 12.3.0.1.4 (324 MB)】进行下载

  • 将安装包上传到Linux上
#创建ogg_install安装目录
mkdir /home/oracle/ogg_install#将ogg安装包(123014_fbo_ggs_Linux_x64_shiphome.zip)上传到ogg_install目录下#解压ogg安装包(123014_fbo_ggs_Linux_x64_shiphome.zip)到当前目录
unzip 123014_fbo_ggs_Linux_x64_shiphome.zip

  • OGG安装的两种方式(任选一种)

a)图形化界面安装

/home/oracle/ogg_install/fbo_ggs_Linux_x64_shiphome/Disk1/runInstaller

后面都是点击下一步即可完成OGG的初始化安装,后续还要对OGG进行手动配置,下面在OGG的配置章节会讲到

b)静默安装

  • 配置安装OGG的文件 oggcore.rsp
vim /home/oracle/ogg_install/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

[将下面的内容粘贴到该文件中,已经有的配置项只要填写值即可,不要重复添加,其中的参数需要根据ORACLE安装的实际情况来配置,参考每行参数的注释]

#安装的数据库版本
INSTALL_OPTION=ORA11g
#安装的路径
SOFTWARE_LOCATION=/home/oracle/ogg
#安装后开启OGG管理
START_MANAGER=false
#OGG管理端口
MANAGER_PORT=1530
#ORACLE的安装位置(可通过命令查看 :echo $ORACLE_HOME)
DATABASE_LOCATION=/u01/oracle
#ORACLE日志文件目录 (可通过命令查看:locate oraInventory)
INVENTORY_LOCATION=/u01/oraInventory
#ORACLE安装组
UNIX_GROUP_NAME=oinstall
  • 配置OGG环境变量(文件 .bash_profile) 【oracle用户登录】
vi /home/oracle/.bash_profile
export ORACLE_BASE=/u01
export ORACLE_HOME=$ORACLE_BASE/oracle
export ORACLE_SID=orcl
export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin:/home/oracle/oggexport NLS_LANG="SIMPLIFIED CHINESE_CHINA".ZHS16GBK
export LD_LIBRARY_PATH=$ORACLE_HOME/lib

[需要增加的地方是ogg的安装目录 /home/oracle/ogg]

  • 创建ogg需要的目录(适用与静默安装方式,如果是图形化界面安装,则不需要,在安装的时候已经自动创建了)
chown oracle:oinstall /home/oracle/ogg
cd /home/oracle/ogg
./ggsci

create subdirs

【上图说明已经创建目录成功了】

【附】各目录用途:

dirchk :Checkpoint files
dirdat :GoldenGate trails
dirdef: Data definition files
dirprm :Parameter files
dirpcs :Process status files
dirrpt :Report files
dirsql :SQL script files
dirtmp :Temporary files

3.目标库Mysql操作

(1)mysql开启二进制日志(my.ini)

  • 编辑mysql配置文件(C:\ProgramData\MySQL\MySQL Server 5.6),修改前备份一下

  • 在[mysqld]下增加如下配置

#二进制日志文件的路径
log-bin=mysql-bin
#服务器的ID,随意取值,局域网内不能重复
server-id=211
  • 重启mysql服务(先停止服务在开启服务)

  • 创建数据库test(如果已经有test数据库就不用创建了)
mysql> create database atc;

  • 创建用户ggt,密码ggt,并给予操作数据库atc的全部权限
#创建ggt用户,密码为ggt,允许任何主机访问
mysql> create user ggt@'%' identified by 'ggt';
Query OK, 0 rows affected (0.01 sec)#授权所有数据库的所有表操作和访问权限给ggt用户
mysql> grant all on *.* to ggt@'%';
Query OK, 0 rows affected (0.00 sec)#刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
  • 创建测试表 m_act,执行下面的创建表语句,可以在navicat根据中执行
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;-- ----------------------------
-- Table structure for M_ACT
-- ----------------------------
DROP TABLE IF EXISTS `M_ACT`;
CREATE TABLE `M_ACT`  (`ID` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL COMMENT '机型ID',`NAME` varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '名称',`NAMES` varchar(50) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '名称简称',`ACT3` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '机型代码简',`ACT5` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '机型代码',`ACTDESC` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '机型描述',`ACTF` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '代码全称',`ALEVEL` varchar(2) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机分类',`TURB` varchar(1) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '尾流等级',`ACLE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机长度',`ACHE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机高度',`ACWS` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '飞机翼展',`ENNO` varchar(1) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '发动机数量',`HITB` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最小高度。单位M',`HITE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最大高度。单位M',`SPDB` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最小速度。单位KM/H',`SPDE` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最大速度。单位KM/H',`WHEELTRACK` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '主轮距',`MAXWEIGHT` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最大起飞权重',`USEC` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '创建用户',`CDAT` varchar(14) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '创建时间',`USEU` varchar(32) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '更新用户',`LSTU` varchar(14) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '更新时间',`REMK` text CHARACTER SET gbk COLLATE gbk_chinese_ci COMMENT '备注',`SEATCNT` varchar(4) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,`LARGE_MIX_TIME` varchar(4) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,`OTHER_MIX_TIME` varchar(4) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL,`MIN_PASS_TIME` varchar(10) CHARACTER SET gbk COLLATE gbk_chinese_ci DEFAULT NULL COMMENT '最小过站时间',PRIMARY KEY (`ID`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Compact;SET FOREIGN_KEY_CHECKS = 1;
  • 将mysql中M_ACT表导入到ORACLE中,可使用navicat根据中的数据传输进行同步

(2)下载ggs mysql端

  • 官网网址(需要注册oracle账户):https://www.oracle.com/technetwork/cn/middleware/goldengate/downloads/index.html
  • 勾选接受许可协议

  • 点击下载连接【适用于 Windows(64 位)上 MySQL 的 Oracle GoldenGate 12.3.0.1.2 (72 MB)】

(3)将mysql端ggs安装包(123012_ggs_Windows_x64_MySQL_64bit.zip)上传到Mysql服务器上

  • 解压安装包 123012_ggs_Windows_x64_MySQL_64bit.zip到目录 C:\soft\ogg 下

(4)创建mysql的ogg目录

create subdirs

[上图说明ogg目录已经创建成功]

4.源端与目标端的配置

1)源端:ORACLE (100.100.100.210)

  • 为表级添加附加日志
#进入ogg
命令行cd /home/oracle/oggHome
./ggsci#登录ggs用户
dblogin userid ggs password ggs#为测试表(HDKG.M_ACT)添加附加日志
add trandata HDKG.M_ACT#查看添加附加日志是否成功
info trandata HDKG.M_ACT

【添加附加日志出现告警,不影响业务】WARNING OGG-01988  Could not find schematrandata function in source database: failed to find function

  • 配置global
edit params ./GLOBAL

【文件内容如下】

ggschema ggs
  • 创建管理进程
edit params mgr

【文件内容如下】

PORT 7809
DYNAMICPORTLIST 7810-7909
--AUTOSTART ER *
AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3
PURGEOLDEXTRACTS /home/oracle/ogg/dirdat/*, usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
ACCESSRULE, PROG SERVER, ALLOW
  • 启动管理进程 mgr
start mgr
  • 查看进程状态
info all

[RUNNING说明MGR已经启动成功]

  • 创建extract进程
edit params ext1

【文件内容如下】

extract ext1
setenv(NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
userid ggs,password ggs
exttrail /home/oracle/ogg/dirdat/e1
table cms_cluster.student;
  • 启动ext1进程
add extract ext1,tranlog,begin now
add exttrail /home/oracle/ogg/dirdat/e1,extract ext1
start ext1

【上图说明EXT1进程启动成功】

  • 创建pump进程
edit params push
extract push
setenv(NLS_LANG = "AMERICAN_AMERICA.ZHS16GBK")
passthru
userid ggs,password ggs
rmthost 100.100.100.211,mgrport 7809
rmttrail C:\soft\ogg\dirdat\e1
table HDKG.M_ACT;

[文件最后四行的参数值要注意是源库还是目标库的]

  • 启动push进程
add extract push,exttrailsource /home/oracle/ogg/dirdat/e1
add rmttrail C:\soft\ogg\dirdat\e1,extract push
start push

[上图说明push进程启动成功]

  • 创建要同步表的定义
edit param test

文件内容如下:

defsfile ./dirdef/test.def
userid ggs, password ggs
table HDKG.M_ACT;

[都是源库的配置]

  • 退出ogg命令行
exit
  • 生成表定义文件
cd /home/oracle/ogg
./defgen paramfile ./dirprm/test.prm
  • 将生成的test.def (/home/oracle/ogg/dirdef/test.def) 文件传至目标库ogg目录(C:\soft\ogg\dirdef)

2)目标端:MYSQL (100.100.100.211)

  • 创建管理进程

#进入mysql ogg目录(C:\soft\ogg),双击ggsci.exe程序

edit params mgr

文件内容如下:

PORT 7809
DYNAMICPORTLIST 7810-7909
--AUTOSTART ER *
AUTORESTART EXTRACT *,RETRIES 5,WAITMINUTES 3
PURGEOLDEXTRACTS C:\soft\ogg\dirdat\*,usecheckpoints, minkeepdays 3
LAGREPORTHOURS 1
LAGINFOMINUTES 30
LAGCRITICALMINUTES 45
ACCESSRULE, PROG SERVER, ALLOW
  • 启动管理进程
start mgr

[上图说明MGR启动成功]

  • 配置global
edit params ./GLOBALS

[文件内容]

ENABLEMONITORING
checkpointtable atc.checkpoint_table
  • 配置检查点
dblogin sourcedb atc@100.100.100.211:3306 userid ggt password ggt

add checkpointtable atc.checkpoint_table
info checkpointtable atc.checkpoint_table

[在数据库atc中可以看到checkpoint_table表]

  • 创建replicat进程
edit params REP1

文件内容如下:

replicat rep1
sourcedefs C:\soft\ogg\dirdef\test.def
TARGETDB atc@100.100.100.211:3306,userid ggt,password ggt
reperror default,discard
discardfile C:\soft\ogg\dirrpt\rep1.dsc,append,megabytes 50
allownoopupdates
map HDKG.M_ACT,target atc.m_act;

  • 启动rep1进程
add replicat rep1,exttrail C:\soft\ogg\dirdat\e1,checkpointtable atc.checkpoint_table
start rep1

[说明rep1启动成功]

5.验证数据是否实时同步

  • 在ORACLE库表 HDKG.M_ACT添加数据(ID为1,NAME为C919)

  • 查看mysql是否自动添加

【自动同步成功】

ORACLE(Linux版本)实时同步数据到MYSQL(Windows版本)解决方案:OGG相关推荐

  1. ORACLE(Linux版本)实时同步数据到MYSQL(Linux版本)解决方案:OGG

    OGG:Oracle GoldenGate 目录 1.源库与目标库环境(这里是部署到同一台服务器上) 源库环境:Oracle 11.2.0.1.0 + Red Hat Enterprise Linux ...

  2. Oracle同步数据到MySQL

    Oracle同步数据到MySQL 1.首先在TreeSoft数据库中配置两个数据源信息 2.配置数据同步任务,并执行任务 3.同步结果数据查看确认 4.目前TreeSoft支持以下数据同步方案 1.M ...

  3. 跨系统实时同步数据解决方案

    数据量太大,单存储节点存不下,就只能把数据分片存储. 数据分片后,对数据的查询就没那么自由.如订单表按用户ID作为Sharding Key,就只能按用户维度查询.我是商家,我想查我店铺的订单,做不到. ...

  4. inotify实时同步数据

    实时同步服务 如何实现数据实时同步? 2.1.1 实现数据同步通过(利用rsync服务) rsync服务端部署 rsync客户端部署 2.1.2 实现数据实时监控(利用inotify) inotify ...

  5. Sqoop 同步数据到mysql, Can't parse input data: '\N'

    Sqoop 同步数据到mysql Sqoop  从hdfs 同步数据到mysql 是我们常常遇到的事情 同步分为 分区表同步和非分区表同步 需要注意以下几点 1. hive 中的表 必须是textfi ...

  6. rsync+sersync实时同步数据

    前言 rsync+sersync实时同步数据. 简介 rsync+sersync实时同步数据的原理是在客户端安装sersync监控目录的变化,一般是增删改,检测到变化以后,将变化的文件同步到服务端. ...

  7. 局域网内两台SQL Server电脑如何实时同步数据

    局域网内两台SQL Server电脑如何实时同步数据 2007-04-10 15:56 在数据库事务处理系统中,数据的同步性问题非常重要,下面我们来建立一个能检测数据同步性的存储过程.         ...

  8. Oracle通过kafka同步数据到MySQL

    场景 Oracle同步数据最佳的解决方案是自家的ogg,但是考虑到成本,需要找到其他的解决方案.如果是MySQL通过kafka同步,问题简单的多,因为阿里巴巴的开源数据同步方案--canel是最佳的解 ...

  9. Oracle 补充日志分类和相关操作, logminer cdc实时同步数据变化,提取归档日志进行数据挖掘,相关代码实现

    文章目录 一.前情: 二.LogMiner介绍: 三.logminer解析前提: 3.1 开启归档模式 3.2 启用补充日志 (1)补充日志分类 1.1 最小补充日志:最基本的一种数据库级补充日志: ...

最新文章

  1. 计算机应用基础试题及答案试卷号7074,阅读文章,完成试题。后来才知道,在这千钧一发的时刻,是郝副营长划着了火柴,点燃了那本书,举得高高的, - 学进去中小学试卷试题库...
  2. IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐
  3. python播放视频
  4. AttributeError:module 'numbers' has no attribute 'Integral'.
  5. 计算机模拟眼科手术原理,眼科病床的合理安排(计算机模拟实例).pdf
  6. 查一个字段中字符集超过30的列_详细解读MySQL的30条军规
  7. JAVA minaio模型_分布式系统之Java IO模型
  8. MySQL Replication Error 处理一例
  9. python3之urllib代理池
  10. CentOS 升级现有PHP版本
  11. 程序员的炫酷动态科幻桌面壁纸
  12. JAVA垃圾回收机制
  13. WIFI原理,WIFI6各代介绍 2020-11-23
  14. 2019“我爱北京——市民新春联欢会”将现300人大合唱
  15. 人工智能AI工程师学习路线心路历程和总结分享
  16. matlab from workplace,关于使用From workspace的问题
  17. CAD偏移曲线(网页版)
  18. CVPR 2020 | 旷视研究院探究优化场景文字识别的「词汇依赖」问题
  19. 运算放大器单电源供电和双电源供电
  20. 读取BIL格式高光谱数据——C/C++

热门文章

  1. 漫谈广告竞价模式(一)
  2. 工程数学(数值分析)第一讲:误差
  3. TensorFlow2.0:张量限幅
  4. G-TAD: Sub-Graph Localization for Temporal Action Detection
  5. 在基于对话框的MFC创建状态栏以及添加时间显示
  6. LeetCode刷题(47)--Gray Code
  7. Mysql更新计数器_MySQL实现计数器如何在高并发场景下更新并保持数据正确性
  8. 手把手教你启动若依前后端分离项目
  9. JS, CSS 文件压缩与反压缩工具
  10. JAVA泛型只能用引用类型_Java泛型和设计模式:不参数化对泛型类型的引用总是一件坏事吗?...