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

标签: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中。

原文地址:https://www.cnblogs.com/margiex/p/11538056.html

时间: 2024-10-06 04:59:52

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

配置Goldengate从Oracle到PostgreSQL的同步复制

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 配置环境变量 [[email protected] og

mysql半同步复制及复制过滤

配置mysql半同步,前提是已经有master和slave环境. MySQL半同步配置 Master配置 安装semisync_master插件 mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; Query OK, 0 rows affected (0.02 sec) mysql>show plugins; +----------------------------+----------+------

MySQL的半同步复制

1>半同步复制的出现: 默认情况下,复制是异步的,就是客户端提交事务给主库,主库将事务写入到存储引擎和binlog中后会立即返回给客户端告诉其事务执行成功.如果此时该事务还未来得及复制到从库上,如果主库在此时发生崩溃或者服务器宕机,会导致主从切换,此时客户端访问新选举的主库时,就会看不到刚提交的数据. 2>半同步复制的原理: mysql5.5开始通过插件的方式支持半同步复制,主库执行完客户端提交的事务后不会立即返回给客户端,而是等待至少一个从库接收到该事务后才返回给客户端. 半同步复制是全同步

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

Oracle里存储的结构化数据导出到Hadoop体系做离线计算是一种常见数据处置手段.近期有场景需要做Oracle到Hadoop体系的实时导入,这里以此案例做以介绍.Oracle作为商业化的数据库解决方案,自发性的获取数据库事务日志等比较困难,故选择官方提供的同步工具OGG(Oracle GoldenGate)来解决. 安装与基本配置 环境说明 软件配置 角色 数据存储服务及版本 OGG版本 IP 源服务器 OracleRelease11.2.0.1 Oracle GoldenGate 11.2

ogg实现oracle到sql server 2005的同步

一.源端(oracle)配置1.创建同步测试表create table gg_user.t01(name varchar(20) primary key);create table gg_user.t02(id int primary key,name varchar(20));2.添加定义文件(是异构之间的传输,需要转换字段类型等处理需用到defgen工具生成定义文件)GGSCI (kermart) 4> edit params defgendefsfile D:\ggate\dirdef\t

Oracle GoldenGate (以下简称ogg)在异种os上同种db之间的数据同步。

ogg能实现的功能: 可以细化到单表同步,符合特定where条件的rows同步,指定column的同步. ogg 的竞争对手:ibm cdc:dell shareplex:dsg:dds等等 环境描述: 源头:windows 2003x64bit, oracle db 11.2.0.3 x64bit 目的端:suse linux ,oracle db 11.2.0.3 预先准备: 1.Microsoft Visual C ++ 2005 SP1 Redistributable Package 注

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

[OGG]RAC环境下配置OGG单向同步 (四) 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① RAC环境下配置OGG单向同步 注意:本篇BLOG中代码部分需要特别关注的地方我都用黄色背景和红色字体来表示,比如下边的例子中,thread 1的最大归档日志号为33,thread 2的最大归档日志号为43是需要特别关注的地方. List of Archived Lo

OGG 从Oracle备库同步数据至kafka

OGG 从Oracle备库同步数据至kafka Table of Contents 1. 目的 2. 环境及规划 3. 安装配置JDK 3.1. 安装jdk 3.2. 配置环境变量 4. 安装Dataguard 4.1. 安装备库软件 4.2. 配置dataguard 4.2.1. 主库 4.2.2. 备库 4.3. 完成操作 4.4. 启动实时复制 5. zookeeper集群 5.1. 上传并解压 5.2. 配置 5.3. 创建myid文件 5.4. 配置环境变量 5.5. 启动和查看服务

【转帖】从 Oracle 到 PostgreSQL ,某保险公司迁移实践 技术实践

从 Oracle 到 PostgreSQL ,某保险公司迁移实践 http://www.itpub.net/2019/11/08/4108/ 信泰人寿保险股份有限公司 摘要:去O一直是金融保险行业永恒的话题,但去O的难度之大也只有真正经历过的人才知其中的艰辛.此次笔者结合实际去O工作,对去O过程中碰到的DBLINK.SEQUENCE最大值.空串.SQL语句中的别名等等近50个问题进行探讨,绝对是干货满满,诚意十足! 章晨曦(某保险公司技术经理) Oracle ACE-A,Oracle 10g O