Tâche 1 : configurer les bases de données source et cible pour Oracle GoldenGate

Les bases de données Oracle GoldenGate source et cible doivent être configurées avec les recommandations suivantes.

Pour effectuer cette tâche, procédez comme suit :

Etape 1.1 - Configuration de la base de données

Les bases de données Oracle GoldenGate source et cible doivent être configurées à l'aide des recommandations suivantes :

Configuration Portée Exemple
Activer le mode de consignation des archives Source et Cible
SQL> ARCHIVE LOG LIST Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence 110 Next log sequence to archive 113 Current log sequence 113
Activer FORCE LOGGING Source et Cible
ALTER DATABASE FORCE LOGGING;
ENABLE_GOLDENGATE_REPLICATION Source, cible et bases de données de secours
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*';
Journalisation supplémentaire

Source

Obligatoire sur la cible pour les cas d'inversion de réplication

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Ajouter une journalisation au niveau schéma ou table pour les objets répliqués

Source

Obligatoire sur la cible pour les cas d'inversion de réplication

ADD SCHEMATRANDATA ou ADD TRANDATA
STREAMS_POOL_SIZE

Source

Obligatoire sur la cible pour les cas d'inversion de réplication

La valeur de STREAMS_POOL_SIZE doit être définie sur la valeur suivante :

STREAMS_POOL_SIZE = (((#Extracts + #Integrated Replicats) * 1 Go) * 1,25)

Par exemple, dans une base de données avec 2 extractions et 2 répliques intégrées :

STREAMS_POOL_SIZE = 4 Go * 1,25 = 5 Go

ALTER SYSTEM SET STREAMS_POOL_SIZE=5G SCOPE=BOTH SID='*';

Pour connaître les étapes de préparation de la base de données pour Oracle GoldenGate, reportez-vous à Préparation de la base de données pour Oracle GoldenGate.

Etape 1.2 - Création de l'administrateur de réplication de base de données

Les bases de données source et cible nécessitent la création d'un administrateur GoldenGate, avec les privilèges appropriés affectés comme suit :

En tant qu'utilisateur du système d'exploitation oracle sur le système de base de données source, exécutez les instructions SQL suivantes pour créer l'utilisateur de base de données pour Oracle GoldenGate et affecter les privilèges requis :

[opc@exadb1_node1 ~]$ sudo su - oracle
[oracle@exadb1_node1 ~]$ source dbName.env
[oracle@exadb1_node1 ~]$ sqlplus / as sysdba

# Source CDB
SQL>
alter session set container=cdb$root;
create user c##ggadmin identified by "ggadmin_password" container=all default tablespace USERS temporary tablespace temp;
alter user c##ggadmin quota unlimited on users;
grant set container to c##ggadmin container=all;
grant alter system to c##ggadmin container=all;
grant create session to c##ggadmin container=all;
grant alter any table to c##ggadmin container=all;
grant resource to c##ggadmin container=all;
exec dbms_goldengate_auth.grant_admin_privilege('c##ggadmin',container=>'all');

# Source PDB
SQL>
alter session set container=pdbName;
create user ggadmin identified by "ggadmin_password" container=current;
grant create session to ggadmin container=current;
grant alter any table to ggadmin container=current;
grant resource to ggadmin container=current;
exec dbms_goldengate_auth.grant_admin_privilege('ggadmin');

En tant qu'utilisateur du système d'exploitation oracle sur le système cible, exécutez les instructions SQL suivantes pour créer l'utilisateur de base de données pour Oracle GoldenGate et affecter les privilèges requis :

[opc@exadb2_node1 ~]$ sudo su - oracle
[oracle@exadb2_node1 ~]$ source dbName.env
[oracle@exadb2_node1 ~]$ sqlplus / as sysdba

# Target PDB
SQL>
alter session set container=pdbName;
create user ggadmin identified by "ggadmin_password" container=current;
grant alter system to ggadmin container=current;
grant create session to ggadmin container=current;
grant alter any table to ggadmin container=current;
grant resource to ggadmin container=current;
grant dv_goldengate_admin, dv_goldengate_redo_access to ggadmin container=current;
exec dbms_goldengate_auth.grant_admin_privilege('ggadmin');

Etape 1.3 - Création des services de base de données

Si les bases de données source et cible exécutent la configuration recommandée sur un cluster Oracle RAC avec Oracle Data Guard, un service basé sur les rôles doit être créé pour permettre aux processus Extract ou Replicat de se connecter à l'instance de base de données principale Data Guard appropriée.

Lorsque vous utilisez une base de données colocative source, un service distinct est requis pour la base de données Conteneur racine et la base de données pluggable qui contient le schéma en cours de réplication. Pour une base de données colocative cible, un seul service est requis pour la base de données pluggable.

En tant qu'utilisateur du système d'exploitation oracle sur le système de base de données principale, utilisez dbaascli pour rechercher le nom de la base de données Conteneur et de la base de données pluggable, comme indiqué ici :

[opc@exadb1_node1 ~]$ sudo su - oracle
[oracle@exadb1_node1 ~]$ source dbName.env
[oracle@exadb1_node1 ~]$ dbaascli database getDetails
 --dbname dbName |egrep 'dbName|pdbName'

  "dbName" : "dbName",
      "pdbName" : "pdbName",

En tant qu'utilisateur du système d'exploitation oracle sur les systèmes de base de données principale et de secours, créez et démarrez le service de base de données Conteneur à l'aide de la commande suivante :

[opc@exadb1_node1 ~]$ sudo su - oracle
[oracle@exadb1_node1 ~]$ source dbName.env
[oracle@exadb1_node1 ~]$ srvctl add service -db $ORACLE_UNQNAME
 -service dbName.ggoraclevcn.com -preferred ORACLE_SID1
 -available ORACLE_SID2 -role PRIMARY

En tant qu'utilisateur du système d'exploitation oracle sur les systèmes de base de données principale et de secours, créez et démarrez le service de base de données pluggable à l'aide de la commande suivante :

[oracle@exadb1_node1 ~]$ srvctl add service -db $ORACLE_UNQNAME
 -service dbName.pdbName.ggoraclevcn.com -preferred ORACLE_SID1
 -available ORACLE_SID2 -pdb pdbName -role PRIMARY

En tant qu'utilisateur du système d'exploitation oracle sur les systèmes de base de données principale et de secours, démarrez et vérifiez que les services sont en cours d'exécution, comme indiqué ici :

[oracle@exadb1_node1 ~]$ srvctl start service -db $ORACLE_UNQNAME -role
[oracle@exadb1_node1 ~]$ srvctl status service -d $ORACLE_UNQNAME |grep goldengate

Service dbName.ggoraclevcn.com  is running on instance(s) SID1
Service dbName.pdbName.ggoraclevcn.com is running on instance(s) SID1

Remarque : répétez l'étape 1.3 dans le système de base de données source et cible.