从 Oracle 到 Klustron(原KunlunBase) CDC 同步
大约 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]
/u01/kunlun/ggs
目录下,然后对安装软件进行解压。
a) 将 OGG 安装软装下载到指定目录,这里下载到 [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]
/var/kunlun/ggs
目录下,然后对安装软件进行解压。
a) 将 OGG 安装软装下载到指定目录,这里下载到[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
~/.bash_profile
文件。
b) 配置操作系统用户 kunlun 的环境变量,配置[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 配置。