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

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

概述标签: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

标签:goldengate postgresql oracle Json

测试环境说明

Oracle:@R_419_5087@ 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数据全部内容,希望文章能够帮你解决配置ogg从Oracle到PostgreSQL的同步复制json数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1152836.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存