配置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中。
配置ogg从Oracle到PostgreSQL的同步复制json数据的更多相关文章
- OGG For Oracle To PostgreSQL
本文档描述OGG(Oracle goldengate)为Oracle同步到PostgreSQL数据库配置.在目前去“IOE”潮流.PostgreSQL确实是Oracle最好的替代品之一. 实验环境如下 ...
- 使用ogg实现oracle到postgresql表的实时同步
参考:https://docs.oracle.com/goldengate/c1221/gg-winux/index.html https://blog.51cto.com/hbxztc/188071 ...
- ogg - 从oracle到mysql的同步
说明:这篇文章将介绍如何配置oracle到mysql的ogg同步 源端:ip-192.168.56.11 数据库类型-oracle 11.2.0.4目标端:ip-192.168.56.71 数据库类型 ...
- 配置ogg目录索引-oracle与mysql的双向同步步骤
以下几篇文章描述了利用ogg对oracle与mysql进行双向同步的配置过程以及注意事项,欢迎参考. 配置ogg异构oracle-mysql(1)基础环境配置 http://www.cnblogs.c ...
- 基于OGG的Oracle与Hadoop集群准实时同步介绍
版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/220 来源:腾云阁 https://www.qclou ...
- ogg实现oracle到sql server 2005的同步
一.源端(oracle)配置1.创建同步测试表create table gg_user.t01(name varchar(20) primary key);create table gg_user.t ...
- 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 一.安装软件,配置环境,创建 ...
- Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。
Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...
- 【OGG】RAC环境下配置OGG单向同步 (四)
[OGG]RAC环境下配置OGG单向同步 (四) 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的 ...
随机推荐
- Linux操作系统之用户权限,重定向,文件管理
文件的权限 ls -al ----->隐藏文件会以 .号开头 ls -ld :显示目录自身属性 ls -i 显示文件的索引号----每个文件都有一个对应的号码 ls -r 逆序显示 dr-xr ...
- Fiddler抓websocket协议的包,用jmeter做并发测试
1.Fiddler: 左边为ws请求url.右边为请求数据,响应数据 jmeter:
- 如何将 egg-validate 插件的错误提示,修改为中文?
方案一(需要找到所有的提示并对应成中文,不是一个好方案:例子地址:https://github.com/cag2050/egg_mysql_demo/blob/master/app/controlle ...
- 微服务学习之路(三)——实现RPC远程服务调用
RPC(Remote Producedure Call)调用原理:服务消费者称为客户端,服务提供者称为服务端,处于不同网络地址,需要建立网络连接.建立连接后,双方还必须按照某种约定的协议进行网络通讯— ...
- linux环境下nohup的执行jar
java -jar XXX.jar &命令结尾没有 “&” ,则变成 “java -jar XXX.jar ” ,表示在当前ssh窗口,可按CTRL + C打断程序运行,或者直接关闭窗 ...
- can总线学习网上资料汇总
https://zhuanlan.zhihu.com/p/30247549?utm_source=wechat_session&utm_medium=social&utm_oi=280 ...
- dependencies与devDependencies的区别----npm install
npm install在安装node模块时,有两种命令参数可以把它们的信息写入package.json文件. –save –save-dev 那二者的区别在哪里呢? –save会把依赖包名称添加到pa ...
- Generative Adversarial Networks overview(1)
Libo1575899134@outlook.com Libo (原创文章,转发请注明作者) 本文章会先从Gan的简单应用示例讲起,从三个方面问题以及解决思路覆盖25篇GAN论文,第二个大部分会进一步 ...
- PHP引用(&)
引用是什么 在 PHP 中引用意味着用不同的名字访问同一个变量内容.这并不像 C 的指针:例如你不能对他们做指针运算,他们并不是实际的内存地址.替代的是,引用是符号表别名.注意在PHP 中,变量名和变 ...
- 运行java程序的时候出现Exception in thread "main" java.lang.UnsupportedClassVersionError:
1 Exception in thread "main" java.lang.UnsupportedClassVersionError: com/test/inherited/In ...