病毒肆虐,国难当头,少出门,多思考!
安装环境/介质准备:
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单向复制说起,先有个思想准备。


关于环境变量的重要提醒:
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.

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

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





针对GG做基础配置:


在ogg安装目录下执行以下命令注册GG服务并生成事件日志;
C:\app\19.0.0\ogg>.\install.exe addservice addevents
如果是删除这两项,则执行install deleteevents deleteservice


开启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

-- 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

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
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>