基于Windows平台Oracle RAC 19c构建GoldenGate 19入门

病毒肆虐,国难当头,少出门,多思考!

安装环境/介质准备:

en_windows_server_2019_x64_dvd_3c2cf1202.iso
WINDOWS.X64_193000_grid_home.zip
WINDOWS.X64_193000_db_home.zip
191004_fbo_ggs_Windows_x64_shiphome.zip
vcredist_x64-2012CU4.exe
vcredist_x64-2013.exe
VC_redist.x64-2017.exe
--
其中SOURCE一侧为原有2节点19c RAC环境,TARGET一侧为单点ASM+CDB
(听说Oracle 20c开始只支持CDB模式了,本文仅介绍CDB容器数据库的GG部署,
传统模式的文章太多了,就不多说了。)

在三个19c节点分别安装OGG 19,安装过程非常简单,但配置过程真的很繁琐,本文先从最简单的单点RAC单向复制说起,先有个思想准备。

target平台相关信息:AD成员、ASM+CDB、本文以PDB2复制到PDB2为例。
添加PDB2的侦听器信息,source端也需要添加,不然后续dblogin会报错。

关于环境变量的重要提醒:

If there is one instance of Oracle on the system, the Registry settings for ORACLE_HOME and ORACLE_SID should be sufficient for Oracle oldenGate.

If those settings are incorrect in the Registry and cannot be changed, you can set an override as follows.

单实例OS添加上图环境变量是没有影响的,但是RAC节点上添加的话会导致GI集群服务报错。不添加上述变量,会在GGSCI下执行dblogin时出现警报信息(WARNING OGG-02551 ORACLE_HOME is not set to Oracle software directory.),但不影响操作结果。

官方文档对于Windows平台上的说明真的很差劲:

终极建议将ORACLE_HOME和ORACLE_SID加入到prm配置文件中,这虽然是官方针对Linux的建议,但对Windows平台依然有效。

接下来是GUI安装过程:

开始GG安装,默认选择最新版本,本文也是基于最新版本;

针对GG做基础配置:

source端配置
target端配置
在ogg安装目录下执行以下命令注册GG服务并生成事件日志;
C:\app\19.0.0\ogg>.\install.exe addservice addevents
如果是删除这两项,则执行install deleteevents deleteservice
如果该服务无法启动,请重启该节点OS后服务自动启动。
最后重新打开数据库:alter database open;
开启RAC下的归档日志,需要特别注意两个节点都要shutdown后重新mount才能开启。

source与target两侧均作如下配置,核心就是创建一个CDB架构下实现集成模式复制的账号和前提环境:

CREATE USER C##GGADMIN IDENTIFIED BY oracle_123 DEFAULT TABLESPACE USERS;
GRANT CREATE SESSION, DBA TO C##GGADMIN;
EXECUTE DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('C##GGADMIN',CONTAINER=>'ALL')
GRANT DBA TO C##GGADMIN CONTAINER=ALL;
ALTER SYSTEM SET UNDO_RETENTION=86400 SCOPE=BOTH;
GRANT FLASHBACK ANY TABLE TO C##GGADMIN;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
GRANT ALTER SESSION TO C##GGADMIN;
GRANT SET CONTAINER TO C##GGADMIN;
SELECT PRIVILEGE FROM DBA_SYS_PRIVS WHERE GRANTEE = 'C##GGADMIN';
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION = TRUE;

SOURCE一侧ggsci下启用指定table的附加日志:

DBLOGIN USERID C##GGADMIN@PDB2, PASSWORD oracle_123
ADD SCHEMATRANDATA PDB2.C##GGADMIN
或者
ADD TRANDATA PDB2.C##GGADMIN.TCUSTMER
ADD TRANDATA PDB2.C##GGADMIN.TCUSTORD

ggsci下edit params mgr

PORT 7809
PURGEOLDEXTRACTS C:\app\19.0.0\ogg\dirdat\sr*, USECHECKPOINTS, MINKEEPHOURS 2

ggsci下edit params ./globals

MGRSERVNAME GGSMGR
source一侧创建上图两个文件
-- Change Data Capture parameter file to extract
-- source table changes
--
EXTRACT ext1
SETENV (ORACLE_HOME = "C:\app\19.0.0\database")
SETENV (ORACLE_SID = "orcl1")
USERID C##GGADMIN, PASSWORD oracle_123
LOGALLSUPCOLS
UPDATERECORDFORMAT COMPACT
EXTTRAIL C:\app\19.0.0\ogg\dirdat\sr
SOURCECATALOG pdb2
TABLE pdb2.C##GGADMIN.TCUSTMER;
TABLE pdb2.C##GGADMIN.TCUSTORD;
-- Data Pump parameter file to read the local
-- trail of table changes
--
EXTRACT pmp1
SETENV (ORACLE_HOME = "C:\app\19.0.0\database")
SETENV (ORACLE_SID = "orcl1")
USERID C##GGADMIN, PASSWORD oracle_123
RMTHOST ggtarget, MGRPORT 7809
RMTTRAIL C:\app\19.0.0\ogg\dirdat\tg
SOURCECATALOG pdb2
TABLE pdb2.C##GGADMIN.TCUSTMER;
TABLE pdb2.C##GGADMIN.TCUSTORD;

TARGET一侧的配置如下:

ggsci创建文件edit params ./globals

MGRSERVNAME GGSMGR
CHECKPOINTTABLE C##GGADMIN.ggchkpt
--定义以下输出路径,不是必须,但如果发现./dirdat这种路径有问题时可以尝试使用Windows盘符路径方式。定义该参数后需要stop mgr后退出ggsci重新进入才会生效;
ALLOWOUTPUTDIR c:\app\19.0.0\ogg\

edit params mgr的内容

PORT 7809
PURGEOLDEXTRACTS c:\app\19.0.0\ogg\dirdat\tg*, USECHECKPOINTS, MINKEEPHOURS 2
target一侧创建上图文件
REPLICAT rep1
SETENV (ORACLE_HOME = "C:\app\19.0.0\database")
SETENV (ORACLE_SID = "orcl")
USERID c##ggadmin@pdb2, PASSWORD oracle_123
ASSUMETARGETDEFS
MAP pdb2.C##GGADMIN.*, TARGET pdb2.C##GGADMIN.*;
配置流程如下:
On the source system
» Create an OGG User
» Add supplemental log data for update operations.
» Create an Extract parameter file on source Unix system. 
» Register Extract in database
» Set up an initial Extract checkpoint on source Unix system.
» Create Remote Trail File
» Start Extract
On the target system
» Create an OGG User
» Create a Replicat parameter file on target Unix system.
» Set up an initial Replicat checkpoint on target Unix system.

几个踩坑总结一下:

1、如果ggsci.exe双击报MSVCR1xx.DLL错误,命令行运行ggsci.exe没有反应,则说明vcredist_x64-2013.exe没有安装;

2、如果dblogin无法直接登录到PDB2,则说明tnsname中没有添加PDB部分;

3、如果遇到extract/datapmp/replicat无法启动的情况,则表明配置参数有问题(从别处直接copy过来的参数不一定直接可用哦!),可以回到ogg目录执行配置检查,根据输出信息,调整相关参数。本文中的参数经过实际验证。

.\extract.exe paramfile .\dirprm\extora.prm

.\replicat.exe paramfile .\dirprm\replcat1.prm

源端增删改查的动作会实时同步到目标端

GoldenGate领域的技术文章更新非常滞后,可见技术生态很封闭。网络上连篇像样的关于12c下CDB模式配置GG的文章都找不到,本文提升到19c下的CDB环境,算是一点微薄之力希望对读者有帮助!

照例以下是视频配置过程:

https://youtu.be/oiwLImsHFXA
https://youtu.be/oiwLImsHFXA

2020/2/15更新——rac21上的配置:

PS C:\Windows\system32> cd C:\app\19.0.0\ogg\
PS C:\app\19.0.0\ogg> .\ggsci.exe

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Windows x64 (optimized), Oracle 19c on Oct 19 2019 22:34:39
Operating system character set identified as windows-1252.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.



GGSCI (rac21) 1> edit params ./GLOBALS


GGSCI (rac21) 2> stop mgr
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)?y

Sending STOP request to MANAGER ...

2020-02-15 13:18:08  ERROR   OGG-15162  There was a problem sending a message to MANAGER (Timeout waiting for message).


GGSCI (rac21) 3> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING


GGSCI (rac21) 4> stop mgr
Manager process is required by other GGS processes.
Are you sure you want to stop it (y/n)?y

Sending STOP request to MANAGER ...

2020-02-15 13:26:17  ERROR   OGG-15162  There was a problem sending a message to MANAGER (Timeout waiting for message).


GGSCI (rac21) 5> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING


GGSCI (rac21) 6> exit
PS C:\app\19.0.0\ogg> .\ggsci.exe

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Windows x64 (optimized), Oracle 19c on Oct 19 2019 22:34:39
Operating system character set identified as windows-1252.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.



GGSCI (rac21) 1> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     STOPPED


GGSCI (rac21) 2> start mgr
Manager started.


GGSCI (rac21) 3> add extract ext1, integrated tranlog, begin now
EXTRACT (Integrated) added.


GGSCI (rac21) 4> add exttrail C:\app\19.0.0\ogg\dirdat\sr, extract ext1, megabytes 100
EXTTRAIL added.

GGSCI (rac21) 5> dblogin userid c##ggadmin password oracle_123

2020-02-15 13:29:16  WARNING OGG-02551  ORACLE_HOME is not set to Oracle software directory.
Successfully logged into database CDB$ROOT.

GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 7> register extract ext1 database container (PDB2)

2020-02-15 13:32:02  INFO    OGG-02003  Extract EXT1 successfully registered with database at SCN 5107033.


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 9> edit params pmp1


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 10> add extract pmp1, exttrailsource C:\app\19.0.0\ogg\dirdat\sr begin now
EXTRACT added.


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 11> add rmttrail C:\app\19.0.0\ogg\dirdat\tg extract pmp1
RMTTRAIL added.

GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 12> start ext1

Sending START request to MANAGER ...
EXTRACT EXT1 starting

GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 13> start pmp1

Sending START request to MANAGER ...
EXTRACT PMP1 starting


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 14> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
EXTRACT     RUNNING     EXT1        00:03:18      00:00:06
EXTRACT     RUNNING     PMP1        00:01:14      00:00:01


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 15> info pmp1

EXTRACT    PMP1      Last Started 2020-02-15 13:35   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:09 ago)
Process ID           7864
Log Read Checkpoint  File C:\app\19.0.0\ogg\dirdat\sr000000000
                     2020-02-15 13:37:16.000000  RBA 2208


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 16> info pmp1

EXTRACT    PMP1      Last Started 2020-02-15 13:35   Status RUNNING
Checkpoint Lag       00:00:00 (updated 00:00:01 ago)
Process ID           7864
Log Read Checkpoint  File C:\app\19.0.0\ogg\dirdat\sr000000000
                     2020-02-15 13:38:13.000000  RBA 2385


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 17> add trandata pdb2.c##ggadmin
ERROR: The catalog name is missing. Fully qualified name for table pdb2.c##ggadmin is required for root database.

GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 18> add trandata pdb2.c##ggadmin.*

2020-02-15 13:54:20  INFO    OGG-15132  Logging of supplemental redo data enabled for table PDB2.C##GGADMIN.TCUSTMER.

2020-02-15 13:54:20  INFO    OGG-15133  TRANDATA for scheduling columns has been added on table PDB2.C##GGADMIN.TCUSTMER.

2020-02-15 13:54:20  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table PDB2.C##GGADMIN.TCUSTMER.

2020-02-15 13:54:20  INFO    OGG-15132  Logging of supplemental redo data enabled for table PDB2.C##GGADMIN.TCUSTORD.

2020-02-15 13:54:20  INFO    OGG-15133  TRANDATA for scheduling columns has been added on table PDB2.C##GGADMIN.TCUSTORD.

2020-02-15 13:54:20  INFO    OGG-15135  TRANDATA for instantiation CSN has been added on table PDB2.C##GGADMIN.TCUSTORD.

2020-02-15 13:54:21  INFO    OGG-10471  ***** Oracle Goldengate support information on table C##GGADMIN.TCUSTMER *****
Oracle Goldengate support native capture on table C##GGADMIN.TCUSTMER.
Oracle Goldengate marked following column as key columns on table C##GGADMIN.TCUSTMER: CUST_CODE.

2020-02-15 13:54:21  INFO    OGG-10471  ***** Oracle Goldengate support information on table C##GGADMIN.TCUSTORD *****
Oracle Goldengate support native capture on table C##GGADMIN.TCUSTORD.
Oracle Goldengate marked following column as key columns on table C##GGADMIN.TCUSTORD: CUST_CODE, ORDER_DATE, PRODUCT_CODE, ORDER_ID.

GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 19> stats pmp1

Sending STATS request to EXTRACT PMP1 ...

Start of Statistics at 2020-02-15 14:07:01.

Output to C:\app\19.0.0\ogg\dirdat\tg:

Extracting from PDB2.C##GGADMIN.TCUSTMER to PDB2.C##GGADMIN.TCUSTMER:

*** Total statistics since 2020-02-15 13:37:21 ***
        Total inserts                                      3.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   5.00

*** Daily statistics since 2020-02-15 13:37:21 ***
        Total inserts                                      3.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   5.00

*** Hourly statistics since 2020-02-15 14:00:00 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Latest statistics since 2020-02-15 13:37:21 ***
        Total inserts                                      3.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   5.00

End of Statistics.


GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 20>

GGSCI (rac21 as c##ggadmin@orcl1/CDB$ROOT) 20>

ggtarget一侧配置:

PS C:\Windows\system32> cd C:\app\19.0.0\ogg\
PS C:\app\19.0.0\ogg> .\ggsci.exe

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Windows x64 (optimized), Oracle 19c on Oct 19 2019 22:34:39
Operating system character set identified as windows-1252.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.
GGSCI (ggtarget) 1> edit params ./GLOBALS
GGSCI (ggtarget) 2> exit
PS C:\app\19.0.0\ogg> .\ggsci.exe

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Windows x64 (optimized), Oracle 19c on Oct 19 2019 22:34:39
Operating system character set identified as windows-1252.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.



GGSCI (ggtarget) 1> dblogin userid c##ggadmin password oracle_123

2020-02-15 13:18:22  WARNING OGG-02551  ORACLE_HOME is not set to Oracle software directory.
Successfully logged into database CDB$ROOT.

GGSCI (ggtarget as c##ggadmin@orcl/CDB$ROOT) 2> start mgr
Manager started.


GGSCI (ggtarget as c##ggadmin@orcl/CDB$ROOT) 3> exit
PS C:\app\19.0.0\ogg> .\ggsci.exe

Oracle GoldenGate Command Interpreter for Oracle
Version 19.1.0.0.4 OGGCORE_19.1.0.0.0_PLATFORMS_191017.1054_FBO
Windows x64 (optimized), Oracle 19c on Oct 19 2019 22:34:39
Operating system character set identified as windows-1252.

Copyright (C) 1995, 2019, Oracle and/or its affiliates. All rights reserved.

GGSCI (ggtarget) 1> edit params rep1

GGSCI (ggtarget) 2> dblogin userid c##ggadmin@pdb2 password oracle_123

2020-02-15 13:20:42  WARNING OGG-02551  ORACLE_HOME is not set to Oracle software directory.
Successfully logged into database PDB2.

GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 3> add replicat rep1 integrated exttrail c:\app\19.0.0\ogg\dirdat\target
ERROR: EXTTRAIL file portion must be two characters.


GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 4> add replicat rep1 integrated exttrail c:\app\19.0.0\ogg\dirdat\tg
REPLICAT (Integrated) added.

GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 5> add checkpointtable

No checkpoint table specified. Using GLOBALS specification C##GGADMIN.ggchkpt...
Logon catalog name PDB2 will be used for table specification PDB2.C##GGADMIN.ggchkpt.
ERROR: Failed creating checkpoint table C##GGADMIN.ggchkpt.

OCI Error ORA (status = 955-ORA-00955: name is already used by an existing object).

GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 6> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt

MANAGER     RUNNING
REPLICAT    STOPPED     REP1        00:00:00      00:01:05

GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 7> start rep1

Sending START request to MANAGER ...
REPLICAT REP1 starting
GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 8> info all

Program     Status      Group       Lag at Chkpt  Time Since Chkpt
MANAGER     RUNNING
REPLICAT    RUNNING     REP1        00:00:00      00:00:08

GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 16> info rep1

REPLICAT   REP1      Last Started 2020-02-15 13:23   Status RUNNING
INTEGRATED
Checkpoint Lag       00:00:00 (updated 00:00:09 ago)
Process ID           2732
Log Read Checkpoint  File c:\app\19.0.0\ogg\dirdat\tg000000000
                     2020-02-15 13:56:07.026000  RBA 2761


GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 17> info rep1 detail

REPLICAT   REP1      Last Started 2020-02-15 13:23   Status RUNNING
INTEGRATED
Checkpoint Lag       00:00:00 (updated 00:00:05 ago)
Process ID           2732
Log Read Checkpoint  File c:\app\19.0.0\ogg\dirdat\tg000000000
                     2020-02-15 13:56:17.126000  RBA 2761

INTEGRATED Replicat
DBLOGIN Provided, inbound server name is OGG$REP1 in ATTACHED state


Current Log BSN value: (no data)

Low Watermark CSN value: 5161678
(All source transactions prior to this scn have been applied)

High Watermark CSN value: 5169957
(Some source transactions between this scn and the low watermark may have been applied)

  Extract Source                          Begin             End

  c:\app\19.0.0\ogg\dirdat\tg000000000    * Initialized *   2020-02-15 13:56
  c:\app\19.0.0\ogg\dirdat\tg000000000    * Initialized *   First Record
  c:\app\19.0.0\ogg\dirdat\tg000000000    * Initialized *   First Record


Current directory    C:\app\19.0.0\ogg

Report file          C:\app\19.0.0\ogg\dirrpt\REP1.rpt
Parameter file       C:\app\19.0.0\ogg\dirprm\REP1.prm
Checkpoint file      C:\app\19.0.0\ogg\dirchk\REP1.cpr
Checkpoint table     C##GGADMIN.ggchkpt
Process file
Error log            C:\app\19.0.0\ogg\ggserr.log


GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 18> stats rep1

Sending STATS request to REPLICAT REP1 ...

Start of Statistics at 2020-02-15 14:07:47.


Integrated Replicat Statistics:

        Total transactions                                 4.00
        Redirected                                         0.00
        Replicated procedures                              0.00
        DDL operations                                     0.00
        Stored procedures                                  0.00
        Datatype functionality                             0.00
        Operation type functionality                       0.00
        Event actions                                      0.00
        Direct transactions ratio                          0.00%

Replicating from PDB2.C##GGADMIN.TCUSTMER to PDB2.C##GGADMIN.TCUSTMER:

*** Total statistics since 2020-02-15 13:37:32 ***
        Total inserts                                      3.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   5.00

*** Daily statistics since 2020-02-15 13:37:32 ***
        Total inserts                                      3.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   5.00

*** Hourly statistics since 2020-02-15 14:00:00 ***
        Total inserts                                      1.00
        Total updates                                      0.00
        Total deletes                                      0.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   1.00

*** Latest statistics since 2020-02-15 13:37:32 ***
        Total inserts                                      3.00
        Total updates                                      1.00
        Total deletes                                      1.00
        Total upserts                                      0.00
        Total discards                                     0.00
        Total operations                                   5.00

End of Statistics.


GGSCI (ggtarget as c##ggadmin@orcl/PDB2) 19>