由于oracle 12c已经是多租户架构,在使用OGG同步的时候,需要考虑下面一些情况
- 一个 CDB包含多个PDB,源端部署的一个extract可访问所有pdb redo,理论上不需要每个pdb单独配置extract.
- 抽取模式只能是integrated(集成)模式,不支持claasic capture传统方式捕获;
- 因为要使用integrated extract,因此,需要能访问log mining server,而这个只能从cdb$root中访问;
- 源端要使用common user,即c##ogg这种用户来访问源端DB,这样能访问DB的redo log & all pdbs。
- 在GGSCI或参数文件中,可以使用pdb.schema.table来访问具体的表或序列;
- 可以在参数文件 中使用sourceCatalog参数,指定一个PDB,后面的参数中只需要schema.table即可;
- 目标端每个pdb要有一个replicat进程,即一个replicat进程只能投递到一个PDB,不能投递到多个。
- 源端OGG用户需要赋权:dbms_goldengate_auth.grant_admin_privilege(‘C##GGADMIN’,container=>‘all’),同时建议将ogg的用户设置赋权为:grant dba to c##ogg container=all;
- 源端DB除了以前要打开归档, force logging, 最小附加日志,可能还需要打开一个开关:alter system set enable_goldengate_replication=true;
extract示例:
EXTRACT ex1 SETENV (ORACLE_SID='oradb')
userid c##ogg@oradb, password ogg
EXTTRAIL ./dirdat/ltTABLE pdb1.schema1.table*;
SOURCECATALOG pdb2
TABLE schema2.table*;
TABLE schema3.table*;
SOURCECATALOG pdb3
TABLE schema4.table*;add extract之后,还需要
register extract ex12c database container(pdb1, pdb2, pdb3)
EXTRACT dp1
SETENV (ORACLE_SID='oradb')userid c##ogg@oradb, password oggRMTHOST orasql-test, MGRPORT 7809
RMTTRAIL ./dirdat/rtTABLE pdb1.schema1.table*;
SOURCECATALOG pdb2
TABLE schema2.table*;
TABLE schema3.table*;
SOURCECATALOG pdb3
TABLE schema4.table*;
replicat示例:
REPLICAT rep1
SETENV (ORACLE_SID='condb2')
DBOPTIONS INTEGRATEDPARAMS(parallelism 6)
USERID C##ogg@tgt_pdb1, PASSWORD welcome1
ASSUMETARGETDEFS
MAP pdb1.schema1.table*, target schema1.table*;
MAP pdb3.schema4.table*, target schema1.table*;
sourceCatalog
MAP schema2.table*, target schema1.table*;
MAP schema3.table*, target schema1.table*;