Requirements for Configuring Container Databases for Oracle GoldenGate
This topic describes the special requirements that apply to replication to and from multitenant container databases.
The requirements are:
-
The different pluggable databases in the multitenant container database can have different character sets. Oracle GoldenGate captures data from any multitenant database with different character sets into one trail file and replicates the data without corruption due to using different character sets.
-
Extract must operate in integrated capture mode. See Deciding Which Capture Method to Use for more information about Extract capture modes. Replicat can operate in any of its modes.
-
Extract must connect to the root container (
cdb$root
) as a common user in order to interact with the logmining server. To specify the root container, use the appropriate SQL*Net connect string for the database user that you specify with theUSERID
orUSERIDALIAS
parameter. For example:C##GGADMIN@FINANCE
. See Establishing Oracle GoldenGate Credentials for how to create a user for the Oracle GoldenGate processes and grant the correct privileges. -
To support source CDB 12.2, Extract must specify the trail format as release 12.3. Due to changes in the redo logs, to capture from a multitenant database that is Oracle 12.2 or higher, the trail format release must be 12.3 or higher.
-
The
dbms_goldengate_auth.grant_admin_privilege
package grants the appropriate privileges for capture and apply within a multitenant container database. This includes thecontainer
parameter, which must be set toALL
, as shown in the following example:exec dbms_goldengate_auth.grant_admin_privilege('C##GGADMIN',container=>'all')
-
DDL replication works as a normal replication for multitenant databases. However, DDL on the root container should not be replicated because Replicats must not connect to the root container, only to PDBs.
FLUSH SEQUENCE for Multitenant Database
FLUSH SEQUENCE
must be issued at the PDB level, so the
user will need to create an Oracle GoldenGate user in each PDB that they wish to do
sequence replication for, and then use DBLOGIN
to log into that
PDB, and then perform the FLUSH SEQUENCE
command.
It is recommended that you use the same schema in each PDB, so that it
works with the GGSCHEMA
GLOBALS parameter file. Here is an example:
Environment Information OGG 18.1 Oracle 12c to Oracle 12c Replication, Integrated Extract, Parallel Replicat
Source: CDB GOLD, PDB CERTMISSN
Target: CDB PLAT, PDB CERTDSQ
Source OGG Configuration
Container User: C##GGADMIN
PDB User for Sequences: GGATE
sqlplus / as sysdbao
SQL> alter session set container=CERTMISSN;
SQL> create user ggate identified by password default tablespace users temporary tablespace temp quota unlimited on users container=current;
Run @sequence
sqlplus / as sysdba
SQL> alter session set container=CERTMISSN;
SQL> @sequence
GGATE GLOBALS
GGSCHEMA GGATE
FLUSH
SEQUENCE
:GGSCI> DBLOGIN USERIDALIAS GGADMIN DOMAIN GOLD_QC_CDB$ROOT
GGSCI> FLUSH SEQUENCE CERTMISSN.SRCSCHEMA1.*
PDB User: GGATE
Run @sequence
sqlplus / as sysdba
SQL> alter session set container=CERTDSQ;
SQL> @sequence
When prompted enter GGATE
.
This also applies to the @sequence.sql script
, which
must also be run at each PDB that you are going to capture from.