Tarea 1: Configuración de las bases de datos de origen y destino para Oracle GoldenGate

Las bases de datos de Oracle GoldenGate de origen y destino se deben configurar mediante las siguientes recomendaciones.

Realice los pasos siguientes para completar esta tarea:

Paso 1.1: Configuración de la base de datos

Las bases de datos de Oracle GoldenGate de origen y destino se deben configurar mediante las siguientes recomendaciones:

Configuración Ámbito Ejemplo
Activar Modo Archive Log Origen y destino
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
Activar FORCE LOGGING Origen y destino
ALTER DATABASE FORCE LOGGING;
ENABLE_GOLDENGATE_REPLICATION Origen, Destino y Base de Datos en Espera
ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH SID='*';
Registro Complementario

Origen

Necesario en el destino para los casos en los que se revierte la replicación

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Agregar registro de nivel de esquema o tabla para objetos replicados

Origen

Necesario en el destino para los casos en los que se revierte la replicación

ADD SCHEMATRANDATA o ADD TRANDATA
STREAMS_POOL_SIZE

Origen

Necesario en el destino para los casos en los que se revierte la replicación

El valor de STREAMS_POOL_SIZE se debe definir en el siguiente valor:

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

Por ejemplo, en una base de datos con 2 Extracts y 2 Replicats integrados:

STREAMS_POOL_SIZE = 4 GB * 1,25 = 5 GB

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

Para conocer los pasos para preparar la base de datos para Oracle GoldenGate, consulte Preparación de la base de datos para Oracle GoldenGate.

Paso 1.2: Crear el usuario administrador de replicación de base de datos

Las bases de datos de origen y destino necesitan que se cree un usuario administrador GoldenGate, con los privilegios adecuados asignados de la siguiente manera:

Como usuario del sistema operativo oracle en el sistema de base de datos de origen, ejecute las siguientes instrucciones SQL para crear el usuario de base de datos para Oracle GoldenGate y asignar los privilegios necesarios:

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

Como usuario del sistema operativo oracle en el sistema de destino, ejecute las siguientes instrucciones SQL para crear el usuario de base de datos para Oracle GoldenGate y asignar los privilegios necesarios:

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

Paso 1.3: Creación de los Servicios de Base de Datos

Si las bases de datos de origen y destino están ejecutando la configuración recomendada en un cluster de Oracle RAC con Oracle Data Guard, se debe crear un servicio basado en roles que permita a los procesos de Extract o Replicat conectarse a la instancia de base de datos primaria de Data Guard correcta.

Al utilizar una base de datos multi-inquilino de origen, se necesita un servicio independiente para la base de datos de contenedor raíz (CDB) y la base de datos de conexión (PDB) que contiene el esquema que se está replicando. Para una base de datos multi-inquilino de destino, se necesita un único servicio para la PDB.

Como usuario del sistema operativo oracle en el sistema de base de datos principal, utilice dbaascli para buscar el nombre de la CDB y la PDB, como se muestra a continuación:

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

Como usuario del sistema operativo oracle en los sistemas de base de datos principal y en espera, cree e inicie el servicio de base de datos de CDB mediante el siguiente comando:

[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

Como usuario del sistema operativo oracle en los sistemas de base de datos primaria y en espera, cree e inicie el servicio de base de datos PDB con el siguiente comando:

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

Como usuario del sistema operativo oracle en los sistemas de base de datos primaria y en espera, inicie y verifique que los servicios se están ejecutando, como se muestra a continuación:

[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: Repita el paso 1.3 en el sistema de base de datos de origen y destino.