标签:goldengate postgresql oracle json

测试环境说明

Oracle:Windows 8.1 + Oracle 12.2.0.1.0 + GoldenGate 12.3.0.1.2 for oracle

IP:10.155.4.150

PostgreSQL:CentOS7 + postgresql 10.10-1 + Goldengate 12.2.0.1 for PostgreSQL

IP: 10.155.5.178

源端

(因为Oracle的数据库和OGG安装教程简单,此处不做介绍)

数据库配置

SQL> sqlplus / as sysdba;

SQL>archive log list;

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database archivelog; //打开归档模式

SQL>alter database open;

SQL> alter database force logging; //设置强制记录日志

SQL> alter database add supplemental log data; //增加附加日志

SQL> alter system switch logfile; //切换日志使附加日志生效

SQL> select log_mode,supplemental_log_data_min,force_logging from v$database;

LOG_MODE         SUPPLEMENTAL_LOG FORCE_LOGGING

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

ARCHIVELOG         YES                YES

(这样就配置好了)

SQL> alter system set enable_goldengate_replication=true scope=both;(源端才有)

SQL> create user oracle identified by oracle; //创建源端被抽取用户

SQL> grant dba to oracle; //赋权

SQL>conn oracle/oracle;

//创建源表

SQL>CREATE TABLE jsontest

( id VARCHAR2 (32) NOT NULL PRIMARY KEY,

po_document VARCHAR2 (3000)

CONSTRAINT ensure_json CHECK (po_document IS JSON));

OGG配置

进入oggs目录启动ggsci (默认port 7809,不用修改)

//登陆同步用户

GGSCI (localhost) 1> dblogin userid oracle password oracle

//为同步表添加trandata

add trandata oracle.jsontest

------添加Extract进程

GGSCI (localhost) 2> add extract ex2 integrated tranlog, begin now

GGSCI (localhost) 3> add exttrail ./dirdat/es extract ex2

GGSCI (localhost) 4> edit params ex2

EXTRACT ex2

extract ex2

dynamicresolution

userid oggs,password oggs

exttrail ./dirdat/es format release 12.2 //队列文件版本需要与目标端一致

table oracle.jsontest2;

------添加Pump进程

GGSCI (localhost) 5> add extract pu2 exttrailsource ./dirdat/es, begin now

GGSCI (localhost) 6> add rmttrail ./dirdat/et extract pu2

GGSCI (localhost) 7> edit params pu2

extract pu2

RMTHOST 10.155.5.178, MGRPORT 7810

RMTTRAIL ./dirdat/et

TABLE oracle.jsontest2;

目标端

数据库配置

PostgreSQL 安装教程请参考:https://www.cnblogs.com/freeweb/p/8006639.html

创建用于同步的数据库、用户和Schema,并创建测试表

postgres=# create database smandar;

postgres=# create user smandar superuser password ‘smandar‘;

postgres=# \c smandar smandar

smandar=# create schema smandar;

CREATE SCHEMA

smandar=# \dn

List of schemas

Name | Owner

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

public | smandar

smandar | smandar

(2 rows)

smandar=# CREATE TABLE jsontest

smandar-# (

smandar(# id varchar primary key,

smandar(# po_document json

smandar(# );

CREATE TABLE

smandar=# \d

List of relations

Schema | Name | Type | Owner

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

smandar | jsontest | table | smandar

(1 rows)

OGG安装

(以下的所有$代表smandar用户)

1、解压安装:

$ cd /home/smandar/Oracle/Installation_package

$ unzip 122022_ggs_Linux_x64_PostgreSQL_64bit.zip

$ cd ..

$ mkdir ogg

$ mv Installation_package /ggs_Linux_x64_PostgreSQL_64bit.tar ogg/

$ tar vxf ggs_Linux_x64_PostgreSQL_64bit.tar

Odbc配置

投递到postgresql需要使用odbc方式

配置odbc数据源,goldengate 使用ODBC连接Postgres Database

$ cd /home/smandar/Oracle /ogg

$ vi odbc.ini

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

[ODBC Data Sources]

GG_Postgres=DataDirect 10.10 PostgreSQL Wire Protocol

[ODBC]

IANAAppCodePage=106

InstallDir=/home/smandar/Oracle/ogg

[GG_Postgres]

Driver=/home/smandar/Oracle/ogg/lib/GGpsql25.so

Description=DataDirect 10.10 PostgreSQL Wire Protocol

Database=smandar

HostName=127.0.0.1

PortNumber=5432

LogonID=smandar

Password=smandar

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

[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的密码

配置环境变量

3、修改环境变量 vi ~/.bashrc

export LD_LIBRARY_PATH=/home/smandar/Oracle/ogg/lib:$LD_LIBRARY_PATH

export PATH=$PATH:/home/smandar/Oracle/ogg

export ODBCINI=/home/smandar/Oracle/ogg/odbc.ini

配置OGG参数

$ cd /home/smandar/Oracle /ogg

$ ./ggsci

------创建子目录:

GGSCI (localhost.localdomain) 1>create subdirs

------配置mgr端口(与源端端口不能相同)

GGSCI (localhost.localdomain) 2> edit param mgr

PORT 7810

------配置replicat进程

GGSCI (localhost.localdomain) 3> dblogin sourcedb gg_postgres userid smandar

Password: //输入密码

GGSCI (localhost.localdomain) 4>add add replicat re2, exttrail ./dirdat/et,nodbcheckpoint

GGSCI (localhost.localdomain) 5>edit param re2

REPLICAT re2

targetdb GG_Postgres, USERID smandar, PASSWORD smandar

ASSUMETARGETDEFS

MAP oracle.jsontest2, target smandar.jsontest2;

启动测试

启动源端的mgr进程、ex2进程、pu2进程

启动目标端的mgr,re2进程

源端原始数据

目标端原始数据:

源端插入数据:

SQL>INSERT INTO jsontest2

VALUES ('001',

'{"PONumber" : 1600,

"Reference" : "ABULL-20140421",

"Requestor" : "Alexis Bull",

"User" : "ABULL"}');

SQL>commit;

目标端查询数据:

对json数据进行查询

小结

可以看到,使用OGG,除了标准的数据类型同步外,还可以将oracle db中的json实时同步到 postgresql db中。

配置ogg从Oracle到PostgreSQL的同步复制json数据的更多相关文章

  1. OGG For Oracle To PostgreSQL

    本文档描述OGG(Oracle goldengate)为Oracle同步到PostgreSQL数据库配置.在目前去“IOE”潮流.PostgreSQL确实是Oracle最好的替代品之一. 实验环境如下 ...

  2. 使用ogg实现oracle到postgresql表的实时同步

    参考:https://docs.oracle.com/goldengate/c1221/gg-winux/index.html https://blog.51cto.com/hbxztc/188071 ...

  3. ogg - 从oracle到mysql的同步

    说明:这篇文章将介绍如何配置oracle到mysql的ogg同步 源端:ip-192.168.56.11 数据库类型-oracle 11.2.0.4目标端:ip-192.168.56.71 数据库类型 ...

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

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

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

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

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

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

  7. 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 一.安装软件,配置环境,创建 ...

  8. Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。

    Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...

  9. 【OGG】RAC环境下配置OGG单向同步 (四)

    [OGG]RAC环境下配置OGG单向同步 (四) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的 ...

随机推荐

  1. php中的设计模式---工厂模式及单例模式

    这两个练习放在一起处理. 在python中,这些模式都有的. 要记得三大类模式:创建型,结构型,行为型. NotFoundException.php <?php namespace Bookst ...

  2. 剑指Offer_编程题-003 - 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList

    如题 (总结) 首节点也存放了值,所以ListNode t = listNode; 直接从头开始遍历即可. 简单题目,但是构建的时候出了点问题,毕竟需要自己简单测测. 掌握链表的构建方法, 还要根据题 ...

  3. python应用-craps赌博游戏

    from random import randint face1=randint(1,6) face2=randint(1,6) first_point=face1+face2 print('玩家摇出 ...

  4. vue 实战总结

    相对angular 和react ,本人比较喜欢vue,现在的工作项目也在用vue,前两个有朋友在问我在使用vue中有没有遇到一些很难解决的问题,一下我也只能说出一两个,所以索性就抽时间总结一下我在项 ...

  5. nginx常用运维日志分析命令

    nginx常用日志分析命令 运维人员必备 常用日志分析命令 1.总请求数 wc -l access.log |awk '{print $1}' 2.独立IP数 awk '{print $1}' acc ...

  6. scala中可以执行外部命令Process

    后续用到在总结 Process(s"hadoop fs -rm -r ${path}").!!

  7. Python中*args和**kargs如何使用

    对于初学者来说,看到*args和**kargs就头大,到底它们有何用处,怎么使用?本文将和大家一起来扒一扒,希望对大家学习python有所帮助. 1.*args 实质就是将函数传入的参数,存储在元组类 ...

  8. js沉思录一:js的核心概念

    js的核心概念: 原型.对象(Object).函数(Function); 原型:路由路径上非叶子结点的对象: 对象:无序属性(包括函数)的集合: 函数:函数上下文的集合: 原型: 原型的创建.指定.修 ...

  9. swift与oc的关系

    swift是对oc的扩展 Swift是没有消息机制的Objective-C https://www.oschina.net/translate/inside-swift: swift保持了oc的类结构 ...

  10. cockroachdb docker-compose 本地集群运行以及prometheus监控

    cockroachdb 官方提供的是一个直接使用docker 运行的方式,但是使用docker-compose 会比较方便,可以快速搭建一个集群 同时官方也提供了prometheus 的metrics ...