Category: Golden Gate 12c

Oracle Golden Gate 12c : Llevando a cabo una carga inicial (INITIAL LOAD con DIRECT LOAD)



Oracle Golden Gate es un extraordinario utilitario que tiene Oracle para llevar a cabo replicación de datos, tiene una increíble cantidad de comandos, es muy flexible y muy dúctil a la hora de trasladar datos desde una fuente a otra.



La carga inicial de datos (INITIAL LOAD) es la etapa en donde cargamos toda la información de nuestro origen en el destino por una sola y única vez, para posteriormente comenzar a aplicar sólo los cambios al destino mediante la sincronización de EXTRACTORES con REPLICADORES.

Oracle Golden Gate nos proporcionar una serie de mecanismos para llevar a cabo la carga inicial de estos datos (IUNITIAL LOAD), todas poseen pros y contras
  • Carga inicial de datos desde archivos al replicador (Loading Data from File to Replicat)
  • En esta forma de carga inicial el extractor genera archivos que el replicador puede aplicar en la base de datos de destino, este método es lento y sólo debiese ser ocupado para poca cantidad de registros , además posee limitaciones en los tipos de datos que puede trasladar.
  • Carga inicial de de datos mediante la generación de archivos de TRAIL(Loading Data from Trail to Replicat)
  • El extractor generará archivos de TRAIL los cuales serán leídos por el replicador para cargar la información en la base de datos de destino, mucho más rápido que el anterior caso de INITIAL LOAD
  • Carga de datos desde un archivo a utilitarios de base de datos (Loading Data from File to Database Utility)
  • Este método hace que los EXTRACTORES generen archivos planos en formato ASCII los cuales pueden ser procesados por utilitarios que cargarán la información a nivel de base de datos , por ejemplo un SQLLOADER o cualquier otro utilitario que cargue información a una base de datos (ejem: SQL Server)
  • Carga inicial de datos con carga directa entre extractores y replicadores (Loading Data with an Oracle GoldenGate Direct Load)
  • La carga inicial de datos mediante DIRECT LOAD implica que el extractor le enviará de forma directa los datos a un REPLICADOR el cual hará la carga de forma automática a la tabla que se haya indicado en la claúsula MAP del replicador sin necesidad de generar archivos de TRAIL, no está soportada la copia de tablas que posean LOBs, LONGs o datos estructurados de usuario y no carga los datos que se hayan modificado o insertado en el origen desde que se comenzó con la extracción de datos.
  • Carga inicial de datos mediante BULK LOAD con SQL Loader(Loading Data with a Direct Bulk Load to SQL*Loader)
  • Este forma especial de INITIAL LOAD solamente trabaja con Oracle SQL Loader en el destino, el EXTRACTOR saca los registros desde las tablas de origen y se las envía al REPLICADOR el cual mediante las interfaces de SQLLOADER (procedimientos almacenados) carga la información en las tablas de destino, esta carga de datos no funciona si en el origen existen datos LOBs o LONGs


Oracle Golden Gate INITIAL LOAD con DIRECT LOAD :
Haremos un ejercicio para realizar la INITIAL LOAD mediante la opción de DIRECT LOAD, para poder apreciar de una manera gráfica como sucede esto, les invito a ver la siguiente imagen :>>

1) Creamos nuestra tabla en el orígen con datos que trasladaremos con DIRECT LOAD de Golden Gate

create table tabla_inicio as 
select *
from (
select rownum fila
               from
                       (select rownum r from dual connect by rownum <= 1000) a,
                       (select rownum r from dual connect by rownum <= 1000) b,
                       (select rownum r from dual connect by rownum <= 1000) c
               where rownum <= 100000000
)

Con el anterior comando , tenemos de inmediato 100 millones de filas


2) Creamos nuestro extractor en el origen , a nivel de comando en la interfaz de Golden Gate (ggsci) ejecutamos lo siguiente

add extract EXTINI, SOURCEISTABLE

Donde :

SOURCEISTABLE : Se le indica que el origen de los datos es una tabla Oracle y de allí extraerá todas las filas y columnas que las tablas posean


3) Le proporcionamos el código a nuestro nuevo extractor , en el archivo ./dirprm/extini.prm colocamos lo siguiente

EXTRACT EXTINI
USERID ggorigen, PASSWORD ggorigen123
RMTHOST 198.162.157.200, MGRPORT 7809
RMTTASK replicat, GROUP repini
TABLE GGORIGEN.*
KEYCOLS (FILA);

Donde :

EXTRACT {nombre extractor}: Indica el nombre del extractor Golden Gate
USERID {usuario}, PASSWORD {password} : Son las credenciales de conectividad para nuestra base de datos origen
RMTHOST {Ip máquina}, MGRPORT {Puerto} : Se le proporciona la IP de la máquina donde estará el manager remoto al igual que el puerto donde esté último escuchará
RMTTASK replicat, GROUP {nombre de replicador} : Acá se le indica al extractor como se llama el replicador en la máquina de destino
TABLE {usuario}.{nombre tabla} : Este es el origen de datos, con el usuario dueño y la tabla o tablas a replicar, si usamos un * , le indicamos que tome todas las tablas que pertenecen a un usuario en partícular.
KEYCOLS ({nombre columna}) : En el campo KEYCOLS se indica cual es la Primary Key que no posee la tabla, si esta tabla no posee PK igual, se debe indicar mediante esta claúsula que campo sirve para que Golden Gata identifique de forma única una fila.


4) Creamos nuestro replicador en el destino , a nivel de comando en la interfaz de Golden Gate (ggsci) ejecutamos lo siguiente

add replicat REPINI, SPECIALRUN

Donde :

SPECIALRUN : Con esto se le indica a Golden Gate que este replicador sólo se ejecutará una vez, que no habrá checkpoint y que sólo finalizará cuando haya trasladado todos los datos (no se lleva los cambios que se hayan producido posterior al START del extractor).


5) Le proporcionamos el código a nuestro nuevo replicador, en el archivo ./dirprm/repini.prm colocamos lo siguiente

REPLICAT REPINI
USERID ggdestino, PASSWORD ggdestino123
ASSUMETARGETDEFS
MAP GGORIGEN.*, TARGET GGDESTINO.*;

Donde :

REPLICAT {nombre replicador}: Indica el nombre del replicador Golden Gate
USERID {usuario}, PASSWORD {password} : Son las credenciales de conectividad para nuestra base de datos destino
ASSUMETARGETDEFS : Se usa esta claúsula cuando el orígen de datos y el destino donde quedarán tienen la misma estructura .
MAP {usuario}.{nombre tabla}, TARGET {usuario}.{nombre tabla} : Este es el mapeo de datos, con el usuario dueño y la tabla o tablas a replicar, si usamos un * , le indicamos que tome todas las tablas que pertenecen a un usuario en partícular, MAP indica como viene desde el origen y TARGET es indicativo de donde se cargarán los datos en el destino.


6) Las tablas en el destino deben existir como estructuras de datos, o sea, deben ser creadas antes de comenzar con la replicación


7) Chequeamos nuestro extractor y replicador

GGSCI (oraserver1.localdomain) 3>  info extract EXTINI

EXTRACT    EXTINI    Initialized   2016-06-26 14:05   Status STOPPED
Checkpoint Lag       Not Available
Log Read Checkpoint  Not Available
                     First Record         Record 0
Task                 SOURCEISTABLE
GGSCI (oraserver2.localdomain) 5> info replicat REPINI

REPLICAT   REPINI    Initialized   2016-06-26 14:05   Status STOPPED
Checkpoint Lag       00:00:00 (updated 00:00:02 ago)
Log Read Checkpoint  Not Available
Task                 SPECIALRUN


8) Y ejecutamos nuestro extractor, el cual se comunicará directamente con el replicador y este a su vez insertará los registros de manera automática en la tabla que se le indico en la claúsula MAP

GGSCI (oraserver1.localdomain) 4> start extract EXTINI

Sending START request to MANAGER ...
EXTRACT EXTINI starting


9) Se chequea el estado del extractor y del replicador nuevamente y vemos como avanza el contador de registros leídos

Extractor

Replicador


10) Y nuestra tabla en el destino comienza a cargarse con datos

SQL> select count(*) from ggdestino.tabla_inicio;

  COUNT(*)
----------
   6478000

SQL>


Recordar que los cambios que se hagan a la tabla origen mientras se está generando la replicación no serán traspasados al destino con el INITIAL LOAD, esto se hará solamente en una replicación normal de Oracle Golden Gate


Metalink :
Master Note - Oracle GoldenGate: Initial Load Techniques and References (Doc ID 1311707.1)
Goldengate : Direct Load - Initial Load Techniques (Doc ID 1457164.1)

Espero les sirva para entender lo poderoso de Oracle Golden Gate

by Ligarius
25.06.16. 23:02:05. 666 words, 2071 views. Categories: Oracle Golden Gate, Golden Gate 12c ,