标签: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数据所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)