1、平台环境

Oracle:rhel6.7+Oracle11.2.0.4  ip:192.168.56.2

PostgreSQL:rhel7.2+Pg9.6.1  ip:192.168.56.25

Goldengate:Goldengate12.2.0.1 for oracle和Goldengate 12.2.0.1 for PostgreSQL

2、Ogg配置

Oracle端:

直接安装goldengate for oracle 11g

配置环境变量[oracle@rhel6 ogg]$ vi ~/.bash_profile

#添加

export LD_LIBRARY_PATH=/ogg/lib:$LD_LIBRARY_PATH

export PATH=/ogg:$PATH

配置Oracle数据库#启用归档

sys@ORCL>alter database archivelog;

#Forcing logging

sys@ORCL>alter database force logging;

#添加最小附加日志

sys@ORCL>alter database add supplemental log data;

#查看结果

sys@ORCL>select LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN from v$database;

LOG_MODE     FORCE_LOG SUPPLEMENTAL_LOG_DATA_MI

------------------------------------ --------- ------------------------

ARCHIVELOG     YES       YES

#创建goldengate用户

sys@ORCL>create user goldengate identified by goldengate;

sys@ORCL>grant dba to goldengate;

sys@ORCL>create user zhaoxu identified by zhaoxu;

sys@ORCL>grant dba to zhaoxu;

#创建测试表

zhaoxu@ORCL>create table ggtest (col1 number, col2 varchar2(20));

Table created.

zhaoxu@ORCL>alter table ggtest add constraint pk_ggtest primary key(col1);

Table altered.

配置ogg参数文件#配置mgr

GGSCI (rhel6) 2> edit params mgr

PORT 7809

AUTOSTART ER *

AUTORESTART EXTRACT *,RETRIES 100,WAITMINUTES 2

PURGEOLDEXTRACTS ./dirdat/*,USECHECKPOINTS,MINKEEPDAYS 3

LAGREPORTHOURS 1

LAGINFOMINUTES 30

LAGCRITICALMINUTES 45

SYSLOG ERROR,WARN

#启动mgr

GGSCI (rhel6) 3> start mgr

GGSCI (rhel6) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

#配置抽取进程参数

GGSCI (rhel6) 5> edit params ext_emp

EXTRACT EXT_EMP

DYNAMICRESOLUTION

SETENV (NLS_LANG="AMERICAN_AMERICA.UTF8")

SETENV (ORACLE_HOME="/u02/app/oracle/product/11.2.4/db1")

SETENV (ORACLE_SID="orcl")

USERID goldengate,PASSWORD goldengate

DISCARDFILE ./dirrpt/ext_emp.dsc,APPEND,MEGABYTES 1024

EXTTRAIL ./dirdat/zx

table zhaoxu.ggtest;

#配置投递进程参数

GGSCI (rhel6) 6> edit params dp_tab

EXTRACT DP_TAB

PASSTHRU

RMTHOST 192.168.56.25 ,MGRPORT 7809 , COMPRESS

RMTTRAIL ./dirdat/zx

table zhaoxu.ggtest;

#配置生成定义文件参数

GGSCI (rhel6) 7> edit params defgen

defsfile ./dirdef/defgen.def

userid goldengate, password goldengate

table zhaoxu.ggtest;

#增加抽取进程和传输进程

GGSCI (rhel6) 8> add extract ext_emp,tranlog,begin now

GGSCI (rhel6) 9> add exttrail ./dirdat/zx, extract ext_emp, megabytes 200

GGSCI (rhel6) 10> add extract dp_tab, exttrailsource ./dirdat/zx

GGSCI (rhel6) 11> add rmttrail ./dirdat/zx, extract dp_tab, megabytes 200

GGSCI (rhel6) 12> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

EXTRACT     STOPPED     DP_TAB      00:00:00      00:01:43

EXTRACT     STOPPED     EXT_EMP     00:00:00      00:01:01

#添加表的附加日志

GGSCI (rhel6) 13> dblogin userid goldengate password goldengate

Successfully logged into database.

GGSCI (rhel6 as goldengate@orcl) 14> add trandata zhaoxu.ggtest

Logging of supplemental redo data enabled for table ZHAOXU.GGTEST.

TRANDATA for scheduling columns has been added on table 'ZHAOXU.GGTEST'.

TRANDATA for instantiation CSN has been added on table 'ZHAOXU.GGTEST'.

#生成定义文件

[oracle@rhel6 ogg]$ ./defgen paramfile ./dirprm/defgen.prm

***********************************************************************

Oracle GoldenGate Table Definition Generator for Oracle

Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401

Linux, x64, 64bit (optimized), Oracle 11g on Dec 11 2015 21:37:21

Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved.

Starting at 2016-12-08 13:45:00

***********************************************************************

Operating System Version:

Linux

Version #1 SMP Wed Jul 1 18:23:37 EDT 2015, Release 2.6.32-573.el6.x86_64

Node: rhel6

Machine: x86_64

soft limit   hard limit

Address Space Size   :    unlimited    unlimited

Heap Size            :    unlimited    unlimited

File Size            :    unlimited    unlimited

CPU Time             :    unlimited    unlimited

Process id: 3669

***********************************************************************

**            Running with the following parameters                  **

***********************************************************************

defsfile ./dirdef/defgen.def

userid goldengate, password ***

table zhaoxu.ggtest;

Retrieving definition for ZHAOXU.GGTEST.

Definitions generated for 1 table in ./dirdef/defgen.def.

[oracle@rhel6 ogg]$ cat ./dirdef/defgen.def

*+- Defgen version 5.0, Encoding UTF-8

*

* Definitions created/modified  2016-12-08 13:45

*

*  Field descriptions for each column entry:

*

*     1    Name

*     2    Data Type

*     3    External Length

*     4    Fetch Offset

*     5    Scale

*     6    Level

*     7    Null

*     8    Bump if Odd

*     9    Internal Length

*    10    Binary Length

*    11    Table Length

*    12    Most Significant DT

*    13    Least Significant DT

*    14    High Precision

*    15    Low Precision

*    16    Elementary Item

*    17    Occurs

*    18    Key Column

*    19    Sub Data Type

*    20    Native Data Type

*    21    Character Set

*    22    Character Length

*    23    LOB Type

*    24    Partial Type

*

Database type: ORACLE

Character set ID: UTF-8

National character set ID: UTF-16

Locale: neutral

Case sensitivity: 14 14 14 14 14 14 14 14 14 14 14 14 11 14 14 14

TimeZone: GMT

*

Definition for table ZHAOXU.GGTEST

Record length: 82

Syskey: 0

Columns: 2

COL1   64     50        0  0  0 1 0     50     50     50 0 0 0 0 1    0 1   2    2       -1      0 0 0

COL2   64     20       56  0  0 1 0     20     20      0 0 0 0 0 1    0 0   0    1       -1      0 0 0

End of definition

PostgreSQL端:

创建用于同步的数据库、用户和Schema,并创建测试表postgres=# create database zhaoxu;

postgres=# create user zhaoxu superuser password 'zhaoxu';

postgres=# \c zhaoxu zhaoxu

zhaoxu=# create schema zhaoxu;

CREATE SCHEMA

zhaoxu=# \dn

List of schemas

Name  | Owner

--------+--------

public | pguser

zhaoxu | zhaoxu

zhaoxu=# CREATE TABLE ggtest

zhaoxu-# (

zhaoxu(#   col1 integer NOT NULL,

zhaoxu(#   col2 varchar(20),

zhaoxu(#   CONSTRAINT pk_ggtest PRIMARY KEY (col1)

zhaoxu(# );

CREATE TABLE

zhaoxu=# \d

List of relations

Schema |  Name  | Type  | Owner

--------+--------+-------+--------

zhaoxu | ggtest | table | zhaoxu

解压ogg[pguser@rhel7 ogg]$ tar -xvf ggs_Linux_x64_PostgreSQL_64bit.tar

配置odbc数据源,goldengate 使用ODBC连接Postgres Database[pguser@rhel7 ogg]$ pwd

/ogg

[pguser@rhel7 ogg]$ cat odbc.ini

[ODBC Data Sources]

GG_Postgres=DataDirect 9.6 PostgreSQL Wire Protocol

[ODBC]

IANAAppCodePage=106

InstallDir=/ogg

[GG_Postgres]

Driver=/ogg/lib/GGpsql25.so

Description=DataDirect 9.6 PostgreSQL Wire Protocol

Database=zhaoxu

HostName=127.0.0.1

PortNumber=5432

LogonID=zhaoxu

Password=zhaoxu

[ODBC Data Sources]里边配置该ODBC的别名,本文件中也就是GG_Postgres 后边的配置文件中的targetdb需要与这个对应

[ODBC]:

IANAAppCodePage指的是字符集的设置 这里的106值得是UTF8,如果是4则为ISO-8859-1,注意这个应该始终和postgres的字符集设置相同,不同字符集对应的值见附件。

InstallDir对应ogg的安装目录

[GG_Postgres]:这里的名称对应的是上边ODBC的别名

Driver这里指向的是ogg安装目录下的lib/GGpsql25.so

Description是描述

Database填写数据库名称

HostName填写本机的hostname,可以解析的即可。

PosrNumber是postgres的监听端口。

LogonID填写postgres的用户名

password填写postgres的密码

配置环境变量export LD_LIBRARY_PATH=/ogg/lib:$LD_LIBRARY_PATH

export PATH=$PATH:/ogg

export ODBCINI=/ogg/odbc.ini

配置Ogg[pguser@rhel7 ogg]$ ./ggsci

Oracle GoldenGate Command Interpreter

Version 12.2.0.1.1 OGGCORE_12.2.0.1.0_PLATFORMS_151211.1401

Linux, x64, 64bit (optimized), PostgreSQL on Dec 11 2015 16:22:42

Operating system character set identified as UTF-8.

Copyright (C) 1995, 2015, Oracle and/or its affiliates. All rights reserved.

#创建目录

GGSCI (rhel7) 1>create subdirs

Creating subdirectories under current directory /ogg

Parameter files                /ogg/dirprm: already exists

Report files                   /ogg/dirrpt: created

Checkpoint files               /ogg/dirchk: created

Process status files           /ogg/dirpcs: created

SQL script files               /ogg/dirsql: created

Database definitions files     /ogg/dirdef: created

Extract data files             /ogg/dirdat: created

Temporary files                /ogg/dirtmp: created

Stdout files                   /ogg/dirout: created

#配置mgr进程

PORT 7809

#启动mgr进程

GGSCI (rhel7) 3> start mgr

Manager started.

GGSCI (rhel7) 4> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

#把源端生成的定义文件取到目标端

[pguser@rhel7 ogg]$ scp oracle@192.168.56.2:/ogg/dirdef/defgen.def /ogg/dirdef

#配置复制进程参数

GGSCI (rhel7) 5> edit params rep1

REPLICAT rep1

SOURCEDEFS ./dirdef/defgen.def

SETENV(PGCLIENTENCODING = "UTF8" )

SETENV(ODBCINI="/ogg/odbc.ini" )

SETENV(NLS_LANG="AMERICAN_AMERICA.AL32UTF8")

TARGETDB GG_Postgres,userid zhaoxu ,password zhaoxu

DISCARDFILE ./dirrpt/rep1.dsc

map zhaoxu.ggtest ,target zhaoxu.ggtest;

#添加复制进程

GGSCI (rhel7) 6> add replicat rep1, exttrail ./dirdat/zx,nodbcheckpoint

GGSCI (rhel7) 7> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

REPLICAT    STOPPED     REP1        00:00:00      00:02:29

#测试连接PostgreSQL数据库

GGSCI (rhel7) 8> dblogin sourcedb gg_postgres userid zhaoxu

Password:

2016-12-08 13:27:34  INFO    OGG-03036  Database character set identified as UTF-8. Locale: en_US.

2016-12-08 13:27:34  INFO    OGG-03037  Session character set identified as UTF-8.

Successfully logged into database.

GGSCI (rhel7 as zhaoxu@gg_postgres) 9>

#如果连接不成功,检查pg_hba.conf配置文件

3、启动源端和目标端的进程#Oracle端

GGSCI (rhel6) 16> start *

Sending START request to MANAGER ...

EXTRACT DP_TAB starting

Sending START request to MANAGER ...

EXTRACT EXT_EMP starting

GGSCI (rhel6) 18> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

EXTRACT     RUNNING     DP_TAB      00:00:00      00:00:12

EXTRACT     RUNNING     EXT_EMP     00:00:00      00:00:01

#PostgreSQL端

GGSCI (rhel7) 8> start *

Sending START request to MANAGER ...

REPLICAT REP1 starting

GGSCI (rhel7) 9> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING

REPLICAT    RUNNING     REP1        00:00:00      00:00:00

4、测试数据同步

测试insert#Oracle端

zhaoxu@ORCL>insert into ggtest values(1,'zhaoxu');

1 row created.

zhaoxu@ORCL>insert into ggtest values(2,'luoxi');

1 row created.

zhaoxu@ORCL>insert into ggtest values(3,'sanqi');

1 row created.

zhaoxu@ORCL>commit;

Commit complete.

#PostgreSQL端

zhaoxu=# select * from ggtest;

col1 |  col2

------+--------

1 | zhaoxu

2 | luoxi

3 | sanqi

(3 rows)

测试delete#Oracle端

zhaoxu@ORCL>delete from ggtest where col1=3;

1 row deleted.

zhaoxu@ORCL>commit;

Commit complete.

zhaoxu@ORCL>select * from ggtest;

COL1 COL2

---------- ------------------------------------------------------------

1 zhaoxu

2 luoxi

#PostgreSQL端

zhaoxu=# select * from ggtest;

col1 |  col2

------+--------

1 | zhaoxu

2 | luoxi

(2 rows)

测试update#Oracle端

zhaoxu@ORCL>update ggtest set col2 = 'sanqi' where col1=1;

1 row updated.

zhaoxu@ORCL>commit;

Commit complete.

zhaoxu@ORCL>select * from ggtest;

COL1 COL2

---------- ------------------------------------------------------------

1 sanqi

2 luoxi

#PostgreSQL端

zhaoxu=# select * from ggtest;

col1 | col2

------+-------

2 | luoxi

1 | sanqi

(2 rows)

参考文档:

官方文档:

gg oracle tjs 同步_配置Goldengate从Oracle到PostgreSQL的同步复制相关推荐

  1. oracle 单向同步 方案,使用Goldengate 实现Oracle for Oracle 单向数据同步

    实验环境 数据源端:  host1 ip 192.168.199.163 数据目标端: host2 ip 192.168.199.104 要实现数据的同步,Oracle源端必须满足如下设置Oracle ...

  2. Oracle如何代码编辑,配置UltraEdit为Oracle PL/SQL代码编辑器

    配置UltraEdit为Oracle PL/SQL代码编辑器[@more@] 将下文复制到UltraEdit的wordfile.txt的最后,就能实现UltraEdit中对PL/SQL文件语法突出显示 ...

  3. hibernate oracle 读写分离_利用FDW进行ORACLE到Postgresql的数据迁移

    随着开源数据库技术的发展和去"O"工作的推进,越来越多企业生产系统选择使用Postgresql数据库.Pgsql采用多进程结构,其存储过程.函数的支持好于mysql.个人认为pgs ...

  4. java 多线程同步_浅谈Java多线程(状态、同步等)

    Java多线程是Java程序员必须掌握的基本的知识点,这块知识点比较复杂,知识点也比较多,今天我们一一来聊下Java多线程,系统的整理下这部分内容. 一.Java中线程创建的三种方式: 1.通过继承T ...

  5. python读取oracle数据库性能_用python对oracle进行简单性能测试

    一.概述 dba在工作中避不开的两个问题,sql使用绑定变量到底会有多少的性能提升?数据库的审计功能如果打开对数据库的性能会产生多大的影响?最近恰好都碰到了,索性做个实验. sql使用绑定变量对性能的 ...

  6. windows下mysql主从同步_详解windows下mysql的主从同步

    半路出家到Java,刚开始听说到说程序支持读写分离感觉特别高大上,也一直没接触 偶然的机会接触到了,就一定得记下来. 今天先讲讲数据库的主从同步,两个好处: 是读写分离可以用上.比如 写操作就写到主数 ...

  7. oracle xe 乱码_解决关于:Oracle数据库 插入数据中文乱码 显示问号???

    ABP(现代ASP.NET样板开发框架)系列之19.ABP应用层--审计日志 点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之19.ABP应用层--审计日志 AB ...

  8. cmd oracle 连接实例_基于winserver的Oracle数据库跨版本下的rman备份恢复

    概述 继续上一篇rman跨版本恢复的内容,今天主要分享在目的端恢复的过程,下面一起来看看吧! 因为目标数据库已经有实例,但不需要的,所以这里需要先删除一下. 1.删除安装oracle数据库时的实例 c ...

  9. ffmpegframegrabber 时间戳不同步_多传感器融合中的时间硬同步1-论文阅读

    前言 阅读硕士论文<自动驾驶中多传感器集成同步控制器设计与实现>,该论文为自动驾驶设计了一套时间同步控制器,涉及到的细节非常丰富,可以为多传感器融合中的时间同步提供设计思路. 主要内容 为 ...

最新文章

  1. R:关系型数据库管理
  2. php 获得用户地址吗,php获得用户的真实IP地址_PHP教程
  3. 获取当前时间日期并格式化--JS
  4. 【Linux】2.Linux source命令
  5. 关于静态类初始化问题----CSharp
  6. 刚发现的,免费领取1024G云空间
  7. java 接口防刷_java轻量级接口限流/防刷插件
  8. 对比linux终端模式和图形模式,Linux知识-2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式...
  9. http安全 Java_HTTP通信安全-身份验证 | 字痕随行
  10. 怎样高速读懂别人的项目
  11. 【算法】异或 偶数数组中找到一个唯一奇数
  12. vue v-html 动态内容样式无效解决方法
  13. 根据一张表更新另一张表
  14. 【NOIP2001】【codevs1039】数的划分
  15. 【转】探秘Java中的String、StringBuilder以及StringBuffer
  16. [转][Err] 1452 - Cannot add or update a child row: a foreign key constraint fail
  17. 监控系统中的几种服务器,监控系统各种服务器
  18. matlab气体流速,气体流速的测定方法.pdf
  19. jquery ajax 回调函数里面再执行ajax函数,jQuery AJAX 和其回调函数
  20. 对象存储COS-数据处理能力升级!“组合拳”助力存储新时代!

热门文章

  1. SQL基础【五、Where】
  2. 56个民族sql语句
  3. IIS7 经典模式和集成模式的区别分析
  4. 一文弄懂神经网络中的反向传播法——BackPropagation【转】
  5. Linux centosVMware Apache 配置防盗链、访问控制Directory、访问控制FilesMatch
  6. ASP.NET Web Pages:Chart 帮助器
  7. ef AddDays报错
  8. FB面经Prepare: Email User
  9. 邓迎春绘画201702作品08
  10. javascript调用Flash里对象的方法(函数)搞了五个小时。