Task 1: configurare i database di origine e di destinazione per Oracle GoldenGate

I database Oracle GoldenGate di origine e destinazione devono essere configurati utilizzando i suggerimenti riportati di seguito.

Per completare questo task, effettuare le operazioni riportate di seguito.

Passo 1.1 - Configurazione del database

I database Oracle GoldenGate di origine e destinazione devono essere configurati utilizzando i suggerimenti riportati di seguito.

Configurazione Ambito Esempio
Abilita modalità ARCHIVELOG Origine e target
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
Abilita FORCE LOGGING Origine e target
ALTER DATABASE FORCE LOGGING;
ENABLE_GOLDENGATE_REPLICATION Origine, destinazione e standby
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*';
Log supplementare

Origine

Obbligatorio sulla destinazione per i casi in cui la replica viene annullata

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Aggiungi log a livello di schema o tabella per gli oggetti replicati

Origine

Obbligatorio sulla destinazione per i casi in cui la replica viene annullata

ADD SCHEMATRANDATA o ADD TRANDATA
STREAMS_POOL_SIZE

Origine

Obbligatorio sulla destinazione per i casi in cui la replica viene annullata

Il valore di STREAMS_POOL_SIZE deve essere impostato sul valore seguente:

STREAMS_POOL_SIZE = ((#Extracts + Replicat #Integrated) * 1 GB) * 1,25)

Ad esempio, in un database con 2 estrazioni e 2 repliche integrate:

STREAMS_POOL_SIZE = 4 GB * 1,25 = 5 GB

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

Per i passi per la preparazione del database per Oracle GoldenGate, vedere Preparazione del database per Oracle GoldenGate.

Passo 1.2 - Creare l'utente amministratore della replica del database

Per i database di origine e di destinazione è necessario creare un utente amministratore GoldenGate con privilegi appropriati assegnati come indicato di seguito.

Come utente del sistema operativo oracle nel sistema di database di origine, eseguire le istruzioni SQL riportate di seguito per creare l'utente del database per Oracle GoldenGate e assegnare i privilegi necessari.

[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');

Come utente del sistema operativo oracle nel sistema di destinazione, eseguire le istruzioni SQL riportate di seguito per creare l'utente del database per Oracle GoldenGate e assegnare i privilegi necessari.

[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');

Passo 1.3 - Creare i servizi di database

Se i database di origine e di destinazione eseguono la configurazione consigliata in un cluster Oracle RAC con Oracle Data Guard, è necessario creare un servizio basato su ruoli che consenta ai processi Extract o Replicat di connettersi all'istanza di database primario Data Guard corretta.

Quando si utilizza un database multi-tenant di origine, è necessario un servizio separato per il container database (CDB) root e il pluggable database (PDB) che contiene lo schema da replicare. Per un database multi-tenant di destinazione, è necessario un singolo servizio per il PDB.

Come utente del sistema operativo oracle nel sistema di database primario, utilizzare dbaascli per trovare il nome CDB e PDB, come mostrato qui:

[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",

Come utente del sistema operativo oracle nei sistemi di database primario e in standby, creare e avviare il servizio di database CDB utilizzando il comando seguente:

[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

Come utente del sistema operativo oracle nei sistemi di database primario e in standby, creare e avviare il servizio di database PDB utilizzando il comando seguente:

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

Come utente del sistema operativo oracle nei sistemi di database primario e in standby, avviare e verificare che i servizi siano in esecuzione, come mostrato qui:

[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

Nota: ripetere il passo 1.3 nel sistema di database di origine e di destinazione.