Replicación de múltiples bases de datos “Pluggable” (PDBs) en una arquitectura “Multitenant” utilizando Oracle GoldenGate 12c
Introducción:
Una de las mejoras más importantes de Oracle GoldenGate 12c es la compatibilidad con ambientes “Multitenant”, característica de Oracle Database 12c, como sabemos, esta arquitectura permite tener bases de datos “Container” con múltiples bases de datos “Pluggable” dentro de ella conformando una arquitectura diseñada para mejor rendimiento y escalabilidad.
Oracle GoldenGate trabaja sobre una base de datos “Container” (CDB) de la misma manera que lo hace sobre una base de datos normal (non-CDB). A lo largo de este articulo analizaremos las principales diferencias cuando se configuran procesos “Extract” y “Replicat” conectados directamente a una base de datos “Pluggable” (PDB) en un ambiente “Multitenant” de Oracle 12c.
Estos son algunos de los puntos importantes que debemos tener en cuenta cuando se trabaja con OGG en una arquitectura “Multitenant” 12c.
- La replicación está disponible solo utilizando el modo de captura integrado (integrated capture mode) y no el modo clásico.
- Podemos configurar un unico proceso “Extract” para capturar los cambios efectuados desde multiples PDBs en una base de datos “Container”.
- Debemos utilizar el modo de captura integrado (integrated capture mode), lo que requiere de un servidor para “LogMining” que será accesible solo desde el ROOT CONTAINER (CDB$ROOT).
- Debemos utilizar un usuario común (COMMON) para conectarnos con el servidor de “LogMining”.
- Un proceso “Replicat” puede conectarse y apocar cambios a solo una base de datos “Pluggable” a la vez.
Este articulo explicara como configurar Oracle GoldenGate (OGG) para realizar una replicación uni-direccional entre una base de datos Oracle 12c (cdb1 con bases de datos “Pluggable” cdb1pdb y cdb1pdb2) y otra base de datos Oracle 12c (cdb2 con bases de datos “Pluggable” db2pdb1 y cdb2pdb2).
Arquitectura de replicación Uni-direccional entre bases de datos “Pluggable” dentro de un ambiente “Multitenant”

Para el ejercicio se proporciona la siguiente información:
Servidor de base de datos @Origen (cdb1) | Servidor de base de datos @Destino (cdb2) |
---|---|
|
|
Procesos Oracle GoldenGate en base de datos @Origen | Procesos Oracle GoldenGate en base de datos @Destino |
---|---|
|
|
Procesos Oracle GoldenGate en base de datos @Origen (bases de datos “Plugabble” – cdb1pdb y cdb1pdb2):
- Proceso “Extract” (ES01): este proceso capturara transacciones desde los ‘Online Redo Logs’ con la ayuda del servidor de “LogMining”.
- Proceso “Pump” (PS01 y PS02): Este proceso leerá y extraerá datos desde los ‘Trail files’ y no desde los ‘Online Redo Logs’ de la base de datos.
Procesos Oracle GoldenGate en base de datos @Destino (bases de datos “Pluggabl” – cdb2pdb1 y cdb2pdb2):
- Proceso “Replicat” (RS01 y RS02): Este proceso también conocido como ‘Integrated Replicat Process’, lee los ‘Trail Files’ y construye los denominados ‘Logical Change Records’ (LCRs) que serán transmitidos a la base de datos destino.
Serie de pasos en base de datos @Origen (cdb1):
- Instalar el software de base de datos Oracle 12c R1 como usuario ‘oracle’ en el directorio: ORACLE_HOME=/u01/app/oracle/product/12.1.0/db_1
- Instalar el software de Oracle GoldenGate 12c como usuario ‘oracle’ en el directorio: GOLDENGATE_HOME=/u01/app/ogg/12g
- Configurar y crear subdirectorios necesarios para Oracle GoldenGate en el servidor de base de datos Origen (cdb1)
- Crear y configurar proceso “Manager” y “Extract” y multiples procesos “Pump” para replicacion uni-direccional entre multiples bases de datos “Pluggable” origen (cdb1pdb1 y cdb1pdb2) y destino (cdb2pdb1 y cdb2pdb2).
- Crear base de datos cdb1 y las bases de datos “Pluggable” cdb1pdb1 y cdb1pdb2 utilizando la opción avanzada de DBCA y agregando los esquemas de ejemplo durante el proceso de configuración de la instalación.
- Utilizar NETMGR para registrar los servicios de bases de datos necesarios para cdb1, cdb1pdb1 y cdb1pdb2.
- Utilizar NETMGR para registrar los servicios en el archivo de configuración TNSNAMES.ORA
Instalar la base de datos Oracle 12c con la opción “Multitenant” con multiples bases de datos “Pluggable” en el servidor Origen.
Creando la base de datos ”Container” (cdb1) con dos bases de datos “Pluggable” (cdb1pdb1 y cdb1pdb2)

Instalando el software de Oracle GoldenGate 12c como usuario ‘oracle’ en el servidor de base de datos Origen
Durante la instalación seleccionar la opción ‘Oracle GoldenGate for Oracle Database 12c’


Instalación exitosa del software de Oracle GoldenGate 12c en el servidor Origen.
Ingresar a la base de datos Origen (“Container” cdb1) con privilegios ‘sysdba’ utilizando sqlplus para llevar a cabo las siguientes tareas
- Crear el tablespace GoldenGate
- Crear el usuario ‘c##ogguser’ para gestión de procesos GoldenGate
- Asignar privilegios necesarios para el usuario ‘c##ogguser’
- Activar la característica SUPPLEMENTAL LOGGING de la base de datos
Nota: el paquete y función dbms_goldengate_auth.grant_admin_privilege otorga los privilegios apropiados para captura y aplicación de datos dentro de un ambiente “Multitenant”.
La función incluye el parámetro CONTAINER que debe ser establecido con el valor ALL, ejemplo: dbms_goldengate_auth.grant_admin_privilege(‘C##OGGUSER’,container=>all)
[oracle@ggnode1 ~]$ source 12c.env [oracle@ggnode1 ~]$ echo $ORACLE_SID cdb1 [oracle@ggnode1 ~]$ sqlplus /nolog SQL*Plus: Release 12.1.0.1.0 Production on Sun Jun 7 00:13:12 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. SQL> connect sys/oracle@192.168.56.105:1521/cdb1 as sysdba Connected. SQL> select con_id,name,open_mode from v$pdbs; CON_ID NAME OPEN_MODE ---------- ------------------------------ ---------- 2 PDB$SEED READ ONLY 3 CDB1PDB1 READ WRITE 4 CDB1PDB2 READ WRITE SQL> create tablespace goldengate datafile '/u01/app/oracle/oradata/cdb1/goldengate01.dbf' size 100M autoextend on; Tablespace created. SQL> create user c##ogguser identified by oracle container=all; User created. SQL> grant connect to c##ogguser container=all; Grant succeeded. SQL> grant dba to c##ogguser container=all; Grant succeeded. SQL> grant unlimited tablespace to c##ogguser container=all; Grant succeeded. SQL> grant create session to c##ogguser container=all; Grant succeeded. SQL> grant alter session to c##ogguser container=all; Grant succeeded. SQL> grant select any dictionary to c##ogguser container=all; Grant succeeded. SQL> alter database add supplemental log data; Database altered. SQL> alter database force logging; Database altered. SQL> alter pluggable database all open; Pluggable database altered. SQL> select con_id,name,open_mode from v$pdbs; CON_ID NAME OPEN_MODE ---------- ------------------------------ ---------- 2 PDB$SEED READ ONLY 3 CDB1PDB1 READ WRITE 4 CDB1PDB2 READ WRITE SQL> select supplemental_log_data_min from v$database; SUPPLEME --------------- YES SQL> alter system switch logfile; System altered.
Ingresar a la base de datos “Pluggable” (cdb1pdb1) con privilegios ‘sysdba’, crear el usuario pdb1user y asignar los privilegios necesarios.
SQL> connect sys/oracle@192.168.56.105:1521/cdb1pdb1 as sysdba Connected. SQL> create user pdb1user identified by oracle; User created. SQL> grant connect,resource to pdb1user; Grant succeeded. SQL> grant create session to pdb1user; Grant succeeded. SQL> alter user pdb1user quota unlimited on users; User altered.
Ingresar a la base de datos “Pluggable” (cdb1pdb1) con el usuario pdb1user recién creado y crear los siguientes objetos:
SQL> connect pdb1user/oracle@192.168.56.105:1521/cdb1pdb1 Connected. SQL> create table inventory ( prod_id number, prod_category varchar2(20), qty_in_stock number, last_dml timestamp default systimestamp); Table created. SQL> alter table inventory add constraint pk_inventory primary key (prod_id) ; Table altered. SQL> grant all on inventory to c##ogguser; Grant succeeded. SQL> select tname from tab; TNAME -------------------------------------------------------------------------------- INVENTORY SQL> insert into inventory values(101,'BOOSTER',100,sysdate); 1 row created. SQL> commit; Commit complete. SQL> set lines 200 pages 2000 SQL> select * from inventory; PROD_ID PROD_CATEGORY QTY_IN_STOCK LAST_DML ---------- -------------------- ------------ ----------------------------------- 101 BOOSTER 100 07-JUN-15 01.17.36.000000 AM
Ingresar a la base de datos “Pluggable” (cdb1pdb2) con privilegios ‘sysdba’, crear el usuario pdb1user y asignar los privilegios necesarios.
SQL> connect sys/oracle@192.168.56.105:1521/cdb1pdb2 as sysdba Connected. SQL> create user pdb1user identified by oracle; User created. SQL> grant connect, resource to pdb1user; Grant succeeded. SQL> grant create session to pdb1user; Grant succeeded. SQL> alter user pdb1user quota unlimited on users; User altered.
Ingresar a la base de datos “Pluggable” (cdb1pdb2) con el usuario pdb1user recién creado y crear los siguientes objetos:
SQL> connect pdb1user/oracle@192.168.56.105:1521/cdb1pdb2 Connected. SQL> create table inventory ( prod_id number, prod_category varchar2(20), qty_in_stock number, last_dml timestamp default systimestamp); Table created. SQL> alter table inventory add constraint pk_inventory primary key (prod_id); Table altered. SQL> grant all on inventory to c##ogguser; Grant succeeded. SQL> select tname from tab; TNAME -------------------------------------------------------------------------------- INVENTORY SQL> insert into inventory values(101,'BOOSTER',100,sysdate); 1 row created. SQL> commit; Commit complete. SQL> set lines 200 pages 2000 SQL> select * from inventory; PROD_ID PROD_CATEGORY QTY_IN_STOCK LAST_DML ---------- -------------------- ------------ ----------------------------------- 101 BOOSTER 100 07-JUN-15 01.17.36.000000 AM
Configurar Oracle GoldenGate 12c en la base de datos “Container” Origen (cdb1)
Ejectura el comando ggsci para ingresar a la interfaz de línea de comandos de GoldenGate (GGSCI)
[oracle@ggnode1 ~]$ source 12c.env [oracle@ggnode1 ~]$ cd $GG [oracle@ggnode1 12g]$ pwd /u01/app/ogg/12g [oracle@ggnode1 12g]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316_FBO Linux, x64, 64bit (optimized), Oracle 12c on Sep 25 2013 02:33:54 Operating system character set identified as UTF-8. Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
El siguiente comando creara los subdirectorios necesarios para el ambiente de GoldenGate
GGSCI (ggnode1.oracle.com) 1> create subdirs Creating subdirectories under current directory /u01/app/ogg/12g Parameter files /u01/app/ogg/12g/dirprm: already exists Report files /u01/app/ogg/12g/dirrpt: created Checkpoint files /u01/app/ogg/12g/dirchk: created Process status files /u01/app/ogg/12g/dirpcs: created SQL script files /u01/app/ogg/12g/dirsql: created Database definitions files /u01/app/ogg/12g/dirdef: created Extract data files /u01/app/ogg/12g/dirdat: created Temporary files /u01/app/ogg/12g/dirtmp: created Credential store files /u01/app/ogg/12g/dircrd: created Masterkey wallet files /u01/app/ogg/12g/dirwlt: created Dump files /u01/app/ogg/12g/dirdmp: created
El siguiente comando nos permitirá ingresar a la base de datos “Pluggable” con el usuario ‘c##ogguser’
GGSCI (ggnode1.oracle.com) 2> dblogin userid c##ogguser@cdb1pdb1,password oracle Successfully logged into database CDB1PDB1. GGSCI (ggnode1.oracle.com) 3> add schematrandata pdb1user allcols 2015-06-07 00:36:16 INFO OGG-01788 SCHEMATRANDATA has been added on schema pdb1user. 2015-06-07 00:36:16 INFO OGG-01976 SCHEMATRANDATA for scheduling columns has been added on schema pdb1user. 2015-06-07 00:36:16 INFO OGG-01977 SCHEMATRANDATA for all columns has been added on schema pdb1user. GGSCI (ggnode1.oracle.com) 4> dblogin userid c##ogguser@cdb1pdb2,password oracle Successfully logged into database CDB1PDB2. GGSCI (ggnode1.oracle.com) 5> add schematrandata pdb1user allcols 2015-06-07 00:36:42 INFO OGG-01788 SCHEMATRANDATA has been added on schema pdb1user. 2015-06-07 00:36:42 INFO OGG-01976 SCHEMATRANDATA for scheduling columns has been added on schema pdb1user. 2015-06-07 00:36:42 INFO OGG-01977 SCHEMATRANDATA for all columns has been added on schema pdb1user.
Ingresar a la base de datos “Container” en el servidor Origen (cdb1)
GGSCI (ggnode1.oracle.com) 6> dblogin userid c##ogguser@cdb1,password oracle Successfully logged into database CDB$ROOT.
El siguiente comando registra el proceso “Extract” (ES01) con la base de datos. Este proceso es llamado ‘Integrated Capture Mode’ en donde el proceso ES01 interactúa directamente con la base de datos “LogMinig”, residente en la base de datos Origen, que recibe los cambios en forma de ‘Logical Change Records’ (LCR).
GGSCI (ggnode1.oracle.com) 7> register extract es01 DATABASE CONTAINER (cdb1pdb1) Extract ES01 successfully registered with database at SCN 1751521.
El siguiente comando registra el proceso “Extract” (ES01) con la base de datos. Este añadira la segunda base de datos “Pluggable” (cdb1pdb2).
GGSCI (ggnode1.oracle.com) 8> register extract es01 DATABASE ADD CONTAINER (cdb1pdb2) Extract ES01 successfully registered containers with database at SCN 1782819.
Agregar los procesos “Extract” (ES01) y “Pump” (PS01 y PS02)
GGSCI (ggnode1.oracle.com) 9> add extract es01 integrated tranlog,begin now EXTRACT added. GGSCI (ggnode1.oracle.com) 10> add exttrail ./dirdat/lt, extract es01 ,megabytes 10 EXTTRAIL added. GGSCI (ggnode1.oracle.com) 11> add extract ps01 ,exttrailsource ./dirdat/lt begin now EXTRACT added. GGSCI (ggnode1.oracle.com) 12> add extract ps02,exttrailsource ./dirdat/lt begin now EXTRACT added. GGSCI (ggnode1.oracle.com) 13> add rmttrail ./dirdat/rt,extract ps01 RMTTRAIL added. GGSCI (ggnode1.oracle.com) 14> add rmttrail ./dirdat/pt,extract ps02 RMTTRAIL added. GGSCI (ggnode1.oracle.com) 15> edit param mgr GGSCI (ggnode1.oracle.com) 16> view param mgr PORT 7809
El parámetro SOURCECATALOG nos permitirá utilizar la nomenclatura Schema.Table registrando únicamente la base de datos “Container”.
El siguiente comando creara y configurara el proceso “Extract” (ES01) y los procesos “Pump” (PS01 y PS02) con la opcion de replicacion “Multitenant”
GGSCI (ggnode1.oracle.com) 17> edit param es01 GGSCI (ggnode1.oracle.com) 40> view param es01 extract es01 userid c##ogguser@cdb1,password oracle LOGALLSUPCOLS UPDATERECORDFORMAT COMPACT exttrail ./dirdat/lt SOURCECATALOG cdb1pdb1 table pdb1user.*; SOURCECATALOG cdb1pdb2 table pdb1user.*; GGSCI (ggnode1.oracle.com) 19> edit param ps01 GGSCI (ggnode1.oracle.com) 41> view param ps01 extract ps01 userid c##ogguser,password oracle RMTHOST ggnode2,mgrport 7810 rmttrail ./dirdat/rt SOURCECATALOG cdb1pdb1 table pdb1user.*; GGSCI (ggnode1.oracle.com) 21> edit param ps01 extract ps02 userid c##ogguser,password oracle RMTHOST ggnode2,mgrport 7810 rmttrail ./dirdat/pt SOURCECATALOG cdb1pdb2 table pdb1user.*;
Iniciar el proceso “Manager” en la base de datos Origen (cdb1)
GGSCI (ggnode1.oracle.com) 24> start mgr Manager started. GGSCI (ggnode1.oracle.com) 25> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT STOPPED ES01 00:00:00 00:05:34 EXTRACT STOPPED PS01 00:00:00 00:04:54 EXTRACT STOPPED PS02 00:00:00 00:04:26 GGSCI (ggnode1.oracle.com) 2> exit
Serie de pasos en base de datos @Destino (cdb2):
- Instalar el software de Oracle GoldenGate 12c como usuario ‘oracle’ en el directorio: GOLDENGATE_HOME=/u01/app/ogg/12g
- Configurar y crear subdirectorios necesarios para Oracle GoldenGate en el servidor de base de datos Destino (cdb2)
- Crear y configurar proceso “Manager” y “Replicat para replicacion uni-direccional entre múltiples bases de datos “Pluggable” origen (cdb1pdb1 y cdb1pdb2) y destino (cdb2pdb1 y cdb2pdb2).
- Crear base de datos cdb2 y las bases de datos “Pluggable” cdb2pdb1 y cdb2pdb2 utilizando la opción avanzada de DBCA y agregando los esquemas de ejemplo durante el proceso de configuración de la instalación.
- Utilizar NETMGR para registrar los servicios de bases de datos necesarios para cdb1, cdb1pdb1 y cdb1pdb2.
- Utilizar NETMGR para registrar los servicios en el archivo de configuración TNSNAMES.ORA
Instalar la base de datos Oracle 12c con la opción “Multitenant” con múltiples bases de datos “Pluggable” en el servidor Destino.
Creando base de datos “Container” (cdb2) con dos bases de datos “Pluggable” (cdb2pdb1 y cdb2pdb2)

Instalando el software de Oracle GoldenGate como usuario ‘oracle’ en el servidor de base de datos Destino
Durante la instalación seleccionamos ‘Oracle GoldenGate for Database 12c’


Instalación exitosa del software de Oracle GoldenGate 12c en la base de datos Destino.
Ingresar a la base de datos Destino (“Container” cdb1) con privilegios ‘sysdba’ utilizando sqlplus para llevar a cabo las siguientes tareas
- Crear el tablespace GoldenGate
- Crear el usuario ‘c##ogguser’ para gestion de procesos GoldenGate
- Asignar privilegios necesarios para el usuario ‘c##ogguser’
- Activar la característica SUPPLEMENTAL LOGGING de la base de datos
Nota: el paquete y función dbms_goldengate_auth.grant_admin_privilege otorga los privilegios apropiados para captura y aplicación de datos dentro de un ambiente “Multitenant”.
La función incluye el parámetro CONTAINER que debe ser establecido con el valor ALL, ejemplo:
dbms_goldengate_auth.grant_admin_privilege(‘C##OGGUSER’,container=>all)
[oracle@ggnode2 ~]$ source 12c.env [oracle@ggnode2 ~]$ sqlplus /nolog SQL*Plus: Release 12.1.0.1.0 Production on Sun Jun 7 00:46:15 2015 Copyright (c) 1982, 2013, Oracle. All rights reserved. SQL> connect sys/oracle@192.168.56.106:1521/cdb2 as sysdba Connected. SQL> select con_id,name,open_mode from v$pdbs; CON_ID NAME OPEN_MODE ---------- ------------------------------ ------------------ 2 PDB$SEED READ ONLY 3 CDB2PDB1 READ WRITE 4 CDB2PDB2 READ WRITE SQL> create tablespace goldengate datafile '/u01/app/oracle/oradata/cdb2/ goldengate01.dbf' size 100M autoextend on; Tablespace created. SQL> create user c##ogguser identified by oracle container=all; User created. SQL> grant connect to c##ogguser container=all; Grant succeeded. SQL> grant dba to c##ogguser container=all; Grant succeeded. SQL> grant unlimited tablespace to c##ogguser container=all; Grant succeeded. SQL> grant create session to c##ogguser container=all; Grant succeeded. SQL> grant alter session to c##ogguser container=all; Grant succeeded. SQL> grant select any dictionary to c##ogguser container=all; Grant succeeded. SQL> alter database add supplemental log data; Database altered. SQL> alter database force logging; Database altered. SQL> alter system switch logfile; System altered. SQL> select supplemental_log_data_min,force_logging from v$database; SUPPLEME FORCE_LOGGING ------------- --------------------------------------- YES YES SQL> exec dbms_goldengate_auth.grant_admin_privilege('C##OGGUSER',container=>'all'); PL/SQL procedure successfully completed.
Ingresar a la base de datos “Pluggable” (cdb2pdb1) con privilegios ‘sysdba’, crear el usuario pdb1user y asignar los privilegios necesarios.
SQL> connect sys/oracle@192.168.56.106:1521/cdb2pdb1 as sysdba Connected. SQL> create user pdb1user identified by oracle; User created. SQL> grant connect,resource to pdb1user; Grant succeeded. SQL> grant create session to pdb1user; Grant succeeded. SQL> alter user pdb1user quota unlimited on users; User altered.
Ingresar a la base de datos “Pluggable” (cdb2pdb1) con el usuario pdb1user recién creado y crear los mismos objetos creados en el ambiente Origen.
SQL> connect pdb1user/oracle@192.168.56.106:1521/cdb2pdb1 Connected. SQL> create table inventory ( prod_id number, prod_category varchar2(20), qty_in_stock number, last_dml timestamp default systimestamp); Table created. SQL> alter table inventory add constraint pk_inventory primary key (prod_id); Table altered. SQL> grant all on inventory to c##ogguser; Grant succeeded.
Ingresar a la base de datos “Pluggable” (cdb2pdb2) con privilegios ‘sysdba’, crear el usuario pdb1user y asignar privilegios necesarios
SQL> connect sys/oracle@192.168.56.106:1521/cdb2pdb2 as sysdba Connected. SQL> create user pdb1user identified by oracle; User created. SQL> grant connect,resource to pdb1user; Grant succeeded. SQL> grant create session to pdb1user; Grant succeeded. SQL> alter user pdb1user quota unlimited on users; User altered.
Ingresar a la base de datos “Pluggable” (cdb2pdb2) con el usuario pdb1user recién creado y crear los objetos siguientes para replicación de la base de datos origen.
SQL> connect pdb1user/oracle@192.168.56.106:1521/cdb2pdb2 Connected. SQL> create table inventory ( prod_id number, prod_category varchar2(20), qty_in_stock number, last_dml timestamp default systimestamp); Table created. SQL> alter table inventory add constraint pk_inventory primary key (prod_id); Table altered. SQL> grant all on inventory to c##ogguser; Grant succeeded.
Configurando Oracle GoldenGate 12c en el servidor de base de datos Destino (cdb2)
[oracle@ggnode2 ~]$ source 12c.env [oracle@ggnode2 ~]$ cd $GG [oracle@ggnode2 12g]$ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 12.1.2.0.0 17185003 OGGCORE_12.1.2.0.0_PLATFORMS_130924.1316_FBO Linux, x64, 64bit (optimized), Oracle 12c on Sep 25 2013 02:33:54 Operating system character set identified as UTF-8. Copyright (C) 1995, 2013, Oracle and/or its affiliates. All rights reserved. GGSCI (ggnode2.oracle.com) 1> create subdirs Creating subdirectories under current directory /u01/app/ogg/12g Parameter files /u01/app/ogg/12g/dirprm: already exists Report files /u01/app/ogg/12g/dirrpt: created Checkpoint files /u01/app/ogg/12g/dirchk: created Process status files /u01/app/ogg/12g/dirpcs: created SQL script files /u01/app/ogg/12g/dirsql: created Database definitions files /u01/app/ogg/12g/dirdef: created Extract data files /u01/app/ogg/12g/dirdat: created Temporary files /u01/app/ogg/12g/dirtmp: created Credential store files /u01/app/ogg/12g/dircrd: created Masterkey wallet files /u01/app/ogg/12g/dirwlt: created Dump files /u01/app/ogg/12g/dirdmp: created
Ingresar a la base de datos “Pluggable” (cdb2pdb1) en la base de datos destino con el usuario ‘c##ogguser’
GGSCI (ggnode2.oracle.com) 1> dblogin userid c##ogguser@cdb2pdb1,password oracle Successfully logged into database CDB2PDB1. The following command will add replicat process (RS01) for pluggable database (cdb2pdb1). GGSCI (ggnode2.oracle.com) 2> add replicat rs01 integrated exttrail ./dirdat/rt REPLICAT (Integrated) added.
Ingresar a la base de datos “Pluggable” (cdb2pdb2) en el servidor Destino con el usuario ‘c##ogguser’
GGSCI (ggnode2.oracle.com) 3> dblogin userid c##ogguser@cdb2pdb2,password oracle Successfully logged into database CDB2PDB2. The following command will add replicat process (RS01) for pluggable database (cdb2pdb2). GGSCI (ggnode2.oracle.com) 4> add replicat rs02 integrated exttrail ./dirdat/pt REPLICAT (Integrated) added. GGSCI (ggnode2.oracle.com) 5> edit param mgr GGSCI (ggnode2.oracle.com) 6> view param mgr PORT 7810
Creando y configurando dos procesos “Replicat” para dos bases de datos “Pluggable” en el servidor destino (cdb2pdb1 y cdb2pdb2)
GGSCI (ggnode2.oracle.com) 7> edit param rs01 GGSCI (ggnode2.oracle.com) 8> view param rs01 replicat rs01 USERID c##ogguser@cdb2pdb1,password oracle assumetargetdefs map cdb1pdb1.pdb1user.*,target cdb2pdb1.pdb1user.*; GGSCI (ggnode2.oracle.com) 10> edit param rs02 GGSCI (ggnode2.oracle.com) 9> view param rs02 replicat rs02 USERID c##ogguser@cdb2pdb2,password oracle assumetargetdefs map cdb1pdb2.pdb1user.*,target cdb2pdb2.pdb1user.*;
Iniciar el proceso “Manager” y los proceso “Replicat” (RS01 y RS02) en el servidor Destino
GGSCI (ggnode2.oracle.com) 12> start mgr Manager started. GGSCI (ggnode2.oracle.com) 13> start replicat rs01 Sending START request to MANAGER ... REPLICAT RS01 starting GGSCI (ggnode2.oracle.com) 14> start replicat rs02 Sending START request to MANAGER ... REPLICAT RS02 starting
Verificar el estado de los procesos “Manager” y “Replicat” (RS01 y RS02) en el servidor Destino
GGSCI (ggnode2.oracle.com) 15> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING REPLICAT RUNNING RS01 00:00:00 00:00:01 REPLICAT RUNNING RS02 00:00:00 00:00:00 GGSCI (ggnode2.oracle.com) 21>
Ingresar a la interfaz de comandos GGSCI de GoldenGate en el servidor Origen
Iniciar los procesos “Manager” y “Extract” (ES01 y ES02) en el servidor Origen
GGSCI (ggnode1.oracle.com) 26> start er * Sending START request to MANAGER ... EXTRACT ES01 starting Sending START request to MANAGER ... EXTRACT PS01 starting Sending START request to MANAGER ... EXTRACT PS02 starting
Verificar el estado de los procesos iniciado “Manager” y “Extract” (ES01 y ES02) en el servidor Origen
GGSCI (ggnode1.oracle.com) 27> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT STARTING ES01 00:00:00 00:30:41 EXTRACT RUNNING PS01 00:00:00 00:30:01 EXTRACT RUNNING PS02 00:00:00 00:29:33 Note: The Extract Process (ES01) still reports a status of “STARTING” after running the info all command. Since the Extract Process (ES01) is running in Integrated Capture Mode it requires extra startup time. GGSCI (ggnode1.oracle.com) 28> info all Program Status Group Lag at Chkpt Time Since Chkpt MANAGER RUNNING EXTRACT RUNNING ES01 00:31:39 00:00:00 EXTRACT RUNNING PS01 00:00:00 00:00:03 EXTRACT RUNNING PS02 00:00:00 00:00:03
Con las siguientes instrucciones vamos a verificar el estado de la replicación mediante los objetos creados durante el procedimiento anterior.
Ingresar al servidor Origen en la base de datos “Pluggable” (cdb1pdb1) y generar cambios en la tabla Inventory, después verificar que los cambios hayan sido aplicados en la base de datos “Pluggable” Destino (cdb2pdb1)

Ingresar al servidor Origen en la base de datos “Pluggable” (cdb1pdb2) y generar cambios en la tabla Inventory, después verificar que los cambios hayan sido aplicados en la base de datos “Pluggable” Destino (cdb2pdb2)

Ingresar a la interfaz GGSCI de GoldenGate en el servidor Origen y verificar las estadisticas del proceso “Extract” (ES01) y el total de operaciones ejecutadas

Ingresar a la interfaz GGSCI de GoldenGate en el servidor Origen y verificar las estadisticas de los procesos “Pump” (PS01 y PS02) y el total de operaciones ejecutadas

Ingresar a la interfaz GGSCI de GoldenGate en el servidor Destino y verificar estadisticas del proceso “Replicat” (RS01) y el total de operaciones ejecutadas

Ingresar a la interfaz GGSCI de GoldenGate en el servidor Destino y verificar estadisticas del proceso “Replicat” (RS02) y el total de operaciones ejecutadas.

Conclusión: Todas las bases de datos “Pluggable” (PDBs) que pertenecen a una base de datos “Container” (CDB) comparten los mismos ‘Redo Log Files’, por lo tanto, GoldenGate necesita filtrar los registros de las PDBs que no necesita. A la vez, cada base de datos “Pluggable” mantiene su propio diccionario de datos y es tarea de GoldenGate registrar y monitorear múltiples diccionarios de datos.
Comentarios
Publicar un comentario