跳至主要內容

从 Oracle 到 Klustron(原KunlunBase) CDC 同步

Klustron大约 7 分钟

从 Oracle 到 Klustron(原KunlunBase) CDC 同步

注意:

如无特别说明,文中的版本号可以使用任何已发布版本的版本号代替。所有已发布版本详见:http://doc.klustron.com/Release_notes.html。

本文目标:

主要内容是介绍使用 Oracle GoldenGate (OGG) 实现 Oracle 数据同步到Klustron的实现细节。具体的内容涵盖,在源端 Oracle 数据库和目标端 Klustron 数据库已经安装部署的基础上,介绍如何在源端和目标端安装部署 OGG,以及如何配置 OGG 将 Oracle 数据同步到Klustron,配置完成后进行了插入和更新的同步测试。

01 OGG的部署规划和安装部署

1.1 OGG 部署规划。

OGG 部署规划
**源端:**Oracle**目标端:**Klustron
Oracle IP**:**192.168.56.104**Klustron 计算节点IP:**192.168.56.112
**OGG软件:**Oracle GoldenGate for Oracle**OGG 软件:**Oracle GoldenGate for Postgesql
**安装 OGG 操作系统用户:**oracle**安装 OGG 操作系统用户:**kunlun
**OGG下载链接:**https://www.oracle.com/middleware/technologies/goldengate-downloads.html

1.2 源端 OGG 软件安装部署 [Oracle]

a) 将 OGG 安装软装下载到指定目录,这里下载到 /u01/kunlun/ggs 目录下,然后对安装软件进行解压。

[oracle@db19c ~]$ cd /u01/kunlun/ggs

[oracle@db19c ggs]$ unzip Oracle_GoldenGate_19.1.0.0.4_for_Oracle_on_Linux_86_64.zip

b) 配置OGG静默安装的应答文件(response文件)。

[oracle@db19c response]$ vi/u01/kunlun/ggs/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

 

INSTALL_OPTION=ORA19c

SOFTWARE_LOCATION=/u01/kunlun/ggs

c) 使用静默安装方式安装 OGG 软件。

[oracle@db19cggs]$cd/u01/kunlun/ggs/fbo_ggs_Linux_x64_shiphome/Disk1

[oracle@db19c Disk1]$ ./runInstaller -silent -responseFile/u01/kunlun/ggs/fbo_ggs_Linux_x64_shiphome/Disk1/response/oggcore.rsp

d) 配置操作系统用户oracle的环境变量,配置~/.bash­_profile文件。

[oracle@db19c ~]$ vi ~/.bash_profile

export ORACLE_BASE=/u01/app/oracle

export ORACLE_HOME=$ORACLE_BASE/product/19.0.0/db_1

export ORACLE_SID=orcl

export OGG_HOME=/u01/kunlun/ggs

export PATH=$ORACLE_HOME/bin:$ORACLE_HOME/OPatch:$OGG_HOME:$BASE_PATH

export LD_LIBRARY_PATH=$ORACLE_BASE/product/19.0.0/db_1/lib:$OGG_HOME

e) 登录 OGG 命令行界面,创建 OGG 存放配置文件和TRAIL等文件的目录。

[oracle@db19c ~]$ cd /u01/kunlun/ggs

[oracle@db19c ggs]$ ./ggsci

GGSCI (db19c) 1> create subdirs

1.3 目标端 OGG 软件安装部署 [Klustron]

a) 将 OGG 安装软装下载到指定目录,这里下载到/var/kunlun/ggs目录下,然后对安装软件进行解压。

[kunlun@kunlun1 soft_u]$ cd /var/kunlun/ggs

[kunlun@kunlun1 ggs]$ unzip p31456619_19100200714_Linux-x86-64_Patch_Oracle_GoldenGate_for_PostgreSQL.zip

[kunlun@kunlun1 ggs]$ ls

[kunlun@kunlun1 ggs]$ tar -xvf ggs_Linux_x64_PostgreSQL_64bit.tar

b) 配置操作系统用户 kunlun 的环境变量,配置~/.bash­_profile文件。

[kunlun@kunlun1 ~]$ vi ~/.bash_profile

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/var/kunlun/ggs/lib

export ODBCINI=/var/kunlun/ggs/odbc.ini

c) 配置 ODBC 文件,设置 ODBC 连接 Klustron 信息。

[kunlun@kunlun1 kunlun]$ vi /var/kunlun/ggs/odbc.ini

 

[ODBC Data Sources]

Kunlundb1=DataDirect 11.5 KUNLUNDB Wire Protocol

[ODBC]

IANAAppCodePage=106

InstallDir=/var/kunlun/ggs

[kunlundb]

Driver=/var/kunlun/ggs/lib/GGpsql25.so

Description=DataDirect 11.5 KUNLUNDB Wire Protocol

Database=postgres

HostName=192.168.56.112

PortNumber=47001

LogonID=abc

Password=kunlun

d) 登录 OGG 命令管理界面,创建 OGG 存放配置文件和 TRAIL 等文件的目录。

[kunlun@kunlun1 ~]$ cd /var/kunlun/ggs

[kunlun@kunlun1 ggs]$ ./ggsci

GGSCI (kunlun1) 1> create subdirs

02 源端数据库 OGG 环境配置 [Oracle]

2.1 源端数据库打开 archive log。

[oracle@db19c ~]$ sqlplus / as sysdba

SQL>shutdown immediate;

SQL>startup mount;

SQL>alter database archivelog;

SQL>alter database open;

SQL>archive log list;

2.2 源端数据库打开数据库级最小附加日志及 force logging。

[oracle@db19c ~]$ sqlplus / as sysdba

SQL>alter database add supplemental log data;

SQL>alter database force logging;

SQL>SELECT supplemental_log_data_min, force_logging FROM v$database;

2.3 源端数据库切换日志以使附加日志生效。

SQL>alter system switch logfile;

2.4 源端数据库 Oracle 中将 enable_goldengate_replication 参数设置为 true。

SQL> alter system set enable_goldengate_replication = true scope=both;  

SQL> show parameter enable_goldengate_replication

2.5 在源端数据库创建 GoldenGate 数据库用户 oggkunlun,并给数据库用户授权。

SQL> create user oggkunlun identified by kunlun;

SQL> GRANT CONNECT TO oggkunlun;

SQL> GRANT CREATE SESSION TO oggkunlun;

SQL> GRANT ALTER SESSION TO oggkunlun;

SQL> GRANT RESOURCE TO oggkunlun;

SQL> GRANT SELECT ANY DICTIONARY TO oggkunlun;

SQL> GRANT SELECT ANY TABLE TO oggkunlun;

SQL> GRANT SELECT ANY TRANSACTION TO oggkunlun;

SQL> GRANT FLASHBACK ANY TABLE TO oggkunlun;

SQL> GRANT ALTER ANY TABLE TO oggkunlun;

SQL> GRANT DBA to oggkunlun;

SQL> exec dbms_goldengate_auth.grant_admin_privilege('oggkunlun');

2.6 在源端数据库创建测试数据库用户 kunlun。

SQL> create user kunlun identified by kunlun;

SQL> grant dba to kunlun;

2.7 在源端数据库用 kunlun 用户连接数据库,并创建测试表。

SQL> conn kunlun/kunlun

SQL> create table kunluntest (id number, name varchar2(20));

SQL> alter table kunluntest add primary key (id);

2.8 源端配置 OGG manager 进程,并启动 manager 进程。

[oracle@db19c ~]$ cd /u01/kunlun/ggs

[oracle@db19c ggs]$ ./ggsci

GGSCI (db19c) 1> dblogin userid oggkunlun, password kunlun

GGSCI (db19c as oggkunlun@orcl) 12> edit param mgr

 

port 8809
GGSCI (db19c as oggkunlun@orcl) 13> start mgr

GGSCI (db19c as oggkunlun@orcl) 14> info all

GGSCI (db19c as oggkunlun@orcl) 2> view param mgr

2.9 在源端配置 OGG extract 抽取进程 eora。

GGSCI (db19c as oggkunlun@orcl) 17> edit param eora

EXTRACT eora

USERID oggkunlun, PASSWORD kunlun

RMTHOST 192.168.56.112, MGRPORT 8809

RMTTRAIL ./dirdat/ep

TABLE kunlun.kunluntest;


GGSCI (db19c as oggkunlun@orcl) 18> view param eora

2.10 在源端将 extract 抽取进程 eora 添加到 manager 进程管理中。

GGSCI (db19c as oggkunlun@orcl) 19> add extract eora, tranlog, begin now

GGSCI (db19c as oggkunlun@orcl) 20> add exttrail ./dirdat/ep, extract eora, megabytes 5

2.11 在源端 OGG 中添加表级附加日志。

GGSCI (db19c as oggkunlun@orcl) 4> add trandata kunlun.*


03 目标端数据库 OGG 环境配置 [Klustron]

3.1 连接到目标数据库 Klustron,创建数据库用户 kunlun。

[kunlun@kunlun1 ggs]$ psql -h 192.168.56.112 -p 47001 postgres

postgres=# create user kunlun with password 'kunlun';

postgres=# grant all privileges on database postgres to kunlun;

3.2 用数据库用户 kunlun 连接 Klustron,并创建测试表。

[kunlun@kunlun1 ggs]$ psql -h 192.168.56.112 -p 47001 -U kunlun postgres

postgres=# CREATE TABLE "public"."kunluntest" ("id" integer NOT NULL, "name" varchar                                                              (20), CONSTRAINT "PK_id_key" PRIMARY KEY ("id"));

postgres=# \dt

3.3 目标端端配置 OGG manager 进程,并启动 manager 进程。

[kunlun@kunlun1 ~]$ cd /var/kunlun/ggs/

[kunlun@kunlun1 ggs]$ ./ggsci

GGSCI (kunlun1) 1> edit param mgr

8809

 

GGSCI (kunlun1) 2> view param mgr

GGSCI (kunlun1) 2> start mgr

GGSCI (kunlun1) 3> info all

3.4 在目标端配置 OGG replicat 复制进程 rora。

GGSCI (kunlun1) 4> edit param rora

REPLICAT rora

SETENV ( PGCLIENTENCODING = "UTF8" )

SETENV (ODBCINI="/var/kunlun/ggs/odbc.ini" )

SETENV (NLS_LANG="AMERICAN_AMERICA.AL32UTF8")

TARGETDB kunlundb, USERID kunlun, PASSWORD kunlun

DISCARDFILE ./dirrpt/diskg.dsc, purge

MAP kunlun.kunluntest, TARGET public.kunluntest;

 

GGSCI (kunlun1) 5> view param rora

3.5 在目标端将 replicat 复制进程 rora 添加到 manager 管理中。。

GGSCI (kunlun1) 8> add replicat rora, NODBCHECKPOINT, exttrail ./dirdat/ep

04 启动 OGG 源端 extract 和目标端 replicat 进程

4.1 源端启动 OGG 的 extract 抽取进程,并查看进程运行状态,确认所有进程状态都是 running。

GGSCI (db19c as oggkunlun@orcl) 21> start eora

GGSCI (db19c as oggkunlun@orcl) 22> info all

4.2 目标端启动 OGG 的 replicat 复制进程,并查看进程运行状态,确认所有进程状态都是 running。

GGSCI (kunlun1) 9> start rora

GGSCI (kunlun1) 10> info all

05 OGG 同步测试

5.1 数据做 insert 操作,验证数据同步

a) 在源端数据库做 insert 操作

[oracle@db19c ~]$ sqlplus kunlun/kunlun

SQL> insert into kunluntest values(10001,'kunlundb admin');

SQL> insert into kunluntest values(10002,'kunlundb operator');

SQL> insert into kunluntest values(10003,'kunlundb user');

SQL> insert into kunluntest values(10004,'zhang shan');

SQL> insert into kunluntest values(10005,'li si');

SQL> commit;

SQL>

SQL> select * from kunluntest;

b) 在目标端数据库查看数据同步情况

[kunlun@kunlun1 ~]$ psql -h 192.168.56.112 -p 47001 -U kunlun postgres

postgres=# select * from public.kunluntest;

c) 源端数据库 insert 操作已同步到目标端数据库。

5.2 数据做 update 操作,验证数据同步

a) 在源端数据库做 update 操作

SQL> update kunluntest set name='zhang shan update' where id=10004;

SQL> update kunluntest set name='li si update' where id=10005;

SQL> commit;

SQL> select * from kunluntest;

b) 在目标端数据库查看数据同步情况

postgres=# select * from public.kunluntest;

c) 源端数据库 update 操作已同步到目标端数据库。

5.3 数据做 delete 操作,验证数据同步

a) 在源端数据库做delete操作

SQL> delete from kunluntest where id=10004;

SQL> delete from kunluntest where id=10005;

SQL> commit;


SQL> select * from kunluntest;

b) 在目标端数据库查看数据同步情况

postgres=# select * from public.kunluntest;

c) 源端数据库 delete 操作已同步到目标端数据库。

完成 OGG 同步数据 Oracle 到 Klustron 配置。

END