参考:https://docs.oracle.com/goldengate/c1221/gg-winux/index.html
https://blog.51cto.com/hbxztc/1880714
环境:oracle 11.2.0.4+centos6.9
postgresql10.6+centos6.9
1.下载OGG
下载网址:https://www.oracle.com/technetwork/middleware/goldengate/downloads/index.html
下载安装包如下:122022_ggs_Linux_x64_PostgreSQL_64bit.zip
V861007-01.zip
2.源端(oracle)ogg安装
$ cd /data/ $ mkdir ogg $ cd /data/software $ unzip V861007-01.Zip $ cd fbo_ggs_Linux_x64_shiphome/Disk1/ $ export DISPLAY=xxx.xxx.xxx.xxx:0.0 $ ./runInstaller
执行命令后,会出现图形化界面
选择安装对应版本oracle的ogg
指定ogg安装路径,配置mgr参数
报错:
只是因为我已经安装过一次了,因此上一次OGG安装目录中已经存在于OGG的安装清单(inventory.xml)里面,解决方法如下:
# find / -name inventory.xml # su - oracle $ vi /oracle/oraInventory/ContentsXML/inventory.xml #删除如下一行即可 <HOME NAME="OraHome1" LOC="/data/ogg" TYPE="O" IDX="2"/>
删除后,点击cancel取消,再次进入图形化界面即可。
3.源端OGG配置
打开归档
alter database archivelog;
打开允许ogg复制,打开附件日志(UPDATE更新redo会记录所有的栏位,会增加redo量)
alter system set enable_goldengate_replication=true;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; --全库打开附件日志,后续不需要对单独的表增加附件日志 --也可以用如下方法,打开最小附加日志,之后对需要OGG的表单独增加附加日志 alter database add supplemental log data; add trandata user.table --这一句后续在OGG中执行
修改环境变量
$ vi .bash_Profile
export GGATE-/data/ogg export PATH=$PATH:$GGATE export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$GGATE
新增ogg用户并赋权
create tablespace ggs_data datafile '/data/db/ggs_data01.dbf' size 1g; create user ggs_owner identified by xxxxxx default tablespace ggs_data temporary tablespace temp quota unlimited on ggs_data; grant connect, resource TO ggs_owner; GRANT select any dictionary, select any table TO ggs_owner; grant flashback any table TO ggs_owner; grant execute on dbms_flashback TO ggs_owner;
新增ogg抽取进程
edit param mgr add extract ext_demo,tranlog,begin now edit param ext_demo -------------------------------------------------------------------------- extract ext_demo setenv (NLS_LANG="TRADITIONAL CHINESE_*.AL32UTF8") setenv (ORACLE_SID=db) userid ggs_owner,password xxxxxx exttrail /data/ogg/dirdat/ed table USER01.TEST01;
--------------------------------------------------------------------------
add exttrail /data/ogg/dirdat/ed,extract ext_dem
新增ogg传送进程
add extract pup_demo exttrailsource /data/ogg/dirdat/ed edit param pup_demo --------------------------------------------------------- extract pup_demo setenv (NLS_LANG="AMERICAN_AMERICA.AL32UTF8") setenv (ORACLE_SID=db) userid ggs_owner,password xxxxxx rmthost xxx.xxx.xxx.xxx,mgrport 7809,compress rmttrail /data/ogg/dirdat/rd table USER01.TEST01; --------------------------------------------------------- add rmttrail /data/ogg/dirdat/rd,extract pup_demo
生成源端定义文件(oracle和pg的数据类型不同,感觉是为了类型转换,没有测试如果不使用会如何)
vi ./dirprm/defgen.prm DEFSFILE ./dirdef/defgen_postgres.prm; userid ggs_owner,password xxxxxx; table USER01.TEST01;
defgen paramfile ./dirprm/defgen.prm
4.postgresql端OGG安装与配置(以下的所有$代表postgres用户)
解压安装
$ cd /data/software/ $ unzip 122022_ggs_Linux_x64_PostgreSQL_64bit.zip $ cd /data/ $ mkdir ogg $ mv software/ggs_Linux_x64_PostgreSQL_64bit.tar ogg/ $ tar vxf ggs_Linux_x64_PostgreSQL_64bit.tar
创建子目录
$ cd /data/ogg $ ggsci create subdirs
创建DSN(database source name)
ogg for pg使用的是ODBC来连接数据库,因此需要指明ODBC dirver
[ODBC Data Sources]:定义的数据库别名,后面的【postgre】部分与之对应
IANAAppCodePage:字符集,应该与postgresql数据库的字符集对应,106代表的是UTF-8
$ cd /data/ogg $ vi odbc.ini ---------------------------------------------------- [ODBC Data Sources] postgre=DataDirect 10.6 PostgreSQL Wire Protocol [ODBC] IANAAppCodePage=106 InstallDir=/data/ogg [postgre] Driver=/data/ogg/lib/GGpsql25.so Description=DataDirect 10.6 PostgreSQL Wire Protocol Database=pgdb HostName=xxx.xxx.xxx.xxx PortNumber=5432 LogonID=ggs_owner Password=xxxxxx --------------------------------------------------
修改postgres环境变量
重点是动态连接库和ODBCINI的环境变量
export GGATE=/data/ogg export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$GGATE/lib export PATH=$PATH:$PGHOME/bin/:$GGATE export ODBCINI=$GGATE/odbc.ini
进入pg数据库创建测试用户(其实应该在创建odbc.ini之前执行)
$ psql create database oggtest; create user ggs_owner superuser password 'xxxxxx'; \c oggtest ggs_owner create schema ggs_owner; create table test01(id int primary key,name varchar(10),age int);
修改mgr参数
$ cd $GGATE $ ggsci edit param mgr --------------------- PORT 7089 ---------------------
新建复制进程