martes, 21 de junio de 2016

REPLICACIÓN ORACLE CON CAPTURA SINCRONA



UNIVERSIDAD DE EL SALVADOR
FACULTAD MULTIDISCIPLINARIA DE OCCIDENTE
DEPARTAMENTO DE INGENIERÍA Y ARQUITECTURA

 
TITULO:

“REPLICACIÓN ORACLE CON CAPTURA SINCRONA”


INTEGRANTES:

Fernando Audiel Arias Guerrero
Douglas Argenis Tobar Sandoval
Marta Cecilia Romero Reyes
Miguel Antonio Pacheco Molina
Erick Antonio Ramírez Salazar


DOCENTE COORDINADOR:
Ing. Alexander Calderón Peraza


Sábado 18 de Junio del 2016



ARQUITECTURA DE ORACLE STREAMS

Capture: (captura) Es un proceso Background de Oracle que lee los redo logs para capturar los cambios  del tipo DML y/o DDL, hechos en los objetos de la Base de Datos, el proceso de captura formatea estos cambios en mensajes llamados LCRs (Logical Change Record) y los encola en una cola. Existen dos tipos de LCRs: Al nivel de filas que  contiene información correspondiente a los cambios de una fila de una tabla, como  resultado de una operación DML, y al nivel de DDLs que contiene información  acerca de cambios del tipo DDL, se pueden usar reglas para especificar que cambios  pueden ser capturados

Staging: (Propagación) Propaga los LCRs desde la cola en la Base de Datos Origen a la cola de la Base de  Datos Destino. La cola desde  donde los LCRs son propagados es llamada “source queue” y la cola que recibe los LCRs es llamada “destination queue”. La relación  entre las colas origen y destino.

Consumption: (aplicación) Proceso Background de Oracle que desencola los LCRs y los mensajes de usuario desde una cola específica y aplica cada uno de estos LCRs directamente o los transfiere como parámetro a un procedimiento de usuario. Los  LCRs desencolados por un proceso de apply  contiene los cambios DML y DDL.

 

GUIA PARA  LA  REPLICACION CON ORACLE STREAMS.

Prerrequisitos Para La Configuración De La Instancia De Oracle Streams

Firewall De Windows

Para realizar  la  replicación necesitamos  asegurar  la conectividad entre  los dos servidores,  en  primer lugar se debe  configurar  el “Firewall” para  que  permita  enviar y recibir paquetes entre ambos servidores.
Entrar  al “Firewall de Windows”   y  elegir  la  pestaña  “Configuración avanzada” y se  habilitara  la  siguiente ventana.

 
En  esta  ventana debemos  configurar  las Reglas de entrada y de salida. Elegimos  la  opción  nueva regla.
 


Elegir  tipo de regla  personalizada  y dar click en “Siguiente”.
 
En  la  opción “Tipo de Protocolo”  elegimos  el  protocolo ICMPv4  y en configuración de ICMP  damos clic  a la opción Personalizado.

 


 En  esta  ventana  elegimos “tipos de ICMP específicos”   y  luego “Petición de eco” y click en “Aceptar”.
 

 

En esta  ventana  elegimos la  acción que  realizara  la  nueva  regla,  en este  caso será  “Permitir la conexión” y clic en “Siguiente”.
 
Luego nos pedirá  elegir  el nombre que  tendrá  la nueva  regla  y  una  descripción. Para terminar  con la creación damos click en el botón “Finalizar”.
Como podemos ver en la imagen la regla se creó satisfactoriamente y se encuentra ya aplicada, para el caso de la Regla de salida se deberá de seguir un proceso similar al anterior.

Asignación De IP Para Cada Servidor

Las  direcciones IPv4  que se  usan son:
192.168.1.2  serverA.
192.168.1.3  serverB.

Probando  la  conexión punto a punto  desde el servidor serverA  hacia  el servidor serverB

 
 
Probando  la  conexión punto a punto  desde el servidor serverB  hacia  el servidor  serverA
 
 

CONFIGURANDO LA BASE DE DATOS PARA LA REPLICACIÓN

Antes de realizar las siguientes practicas se recomienda tener instalada y configurada la instancia de ORACLE, para esto puede realizar las practicas 1 y 2 del libro “Administración de Base de Datos. Ejercicios prácticos de Oracle Database 11g” Autor: Ing. Ernesto Alexander Calderón Peraza.
Se  recomienda  configurar  las  instancias  con nombres diferentes.

Configuración del Archivo TNSNAMES

Procedemos a la configuración del archivo tnsnames.ora, este  archivo  inicialmente  solo tiene  la cadena  conexión  para  el  servidor local,  se debe  editar  el archivo  y agregar  la cadena de conexión  hacia el otro  servidor.
En la  siguiente  imagen se muestra el archivo tnsnames.ora del servidor serverB,  en el archivo tnsnames.ora del servidor serverA  también se  debe agregar la contraparte, es decir  la  conexión hacia el servidor serverB.
 
 
 
Después  de  realizar  la configuración de la  cadena de conexión  en el archivo tnsnames.ora para  ambos  servidores  probamos  la  conectividad  mediante  la  herramienta “tnsping”.
Prueba de la conexión desde el servidor serverA hacia  el serverB.    
           
Prueba de la conexión desde el servidor serverB hacia  el serverA.
 

Modificación del Parámetro ArchiveLog

Para poder realizar el proceso de replicación es necesario  configurar  la base en modo ArchiveLog, esto debido a que necesitamos que ORACLE permita que el archivador almacene y no sobrescriba los grupos de registros de  Redo Log que van a ser necesario para realizar el Streams.  Para esto abrimos el símbolo del sistema y realizamos lo siguiente: 
·         Conectarse en sqlplus  como  usuario sys.
·         Activamos  la  base de datos  en modo Archivelog con el  objetivo de  proteger  los datos.
·         Se  deben ejecutar  los  siguientes  comandos  y luego verificamos  que  la base  de datos  se  encuentre en modo archivelog.
 
Primero desmontamos la base y seguido a esto iniciamos la instacia
 
Luego por medio de un alter activamos  ArchiveLog sobre la base  y en la salida del comando podemos ver que el archivador se ha activado correctamente.
 

Creación y configuración  del usuario “STRMADMIN” 

Creación del Usuario STRMADMIN

Utilizando nuestro navegador favorito accedemos al  Enterprise Manager  y una vez nos aparezca la pantalla de logueo  nos registramos  con el usuario “sys”   y  elegimos  conectarnos  como “SYSDBA”.
Luego damos click  en la pestaña  “Servidor”  y se habilita  la siguiente  ventana.

 

En  la sección de “Almacenamiento”  dar  click en  la opción “Tablespace”.
Creación del Tablespace “STRMADMIN_TBS”, que  será  el tablespace que nuestro  usuario STRMADMIN utilizara.

 
 
 En  esta  ventana   se  podemos  verificar  las tablespaces  que  han sido  creadas,  dar  click en  el botón  crear”  y se nos  habilitara  la siguiente  ventana.


 

Elegimos  el nombre  del tablespace  y en la sección “Archivos de Datos” hacemos  click en el botón “Agregar”  y se  nos  habilita  la siguiente  ventana.
 
Elegimos  el nombre y la  ruta  donde se  guardara el archivo, en la sección de “Almacenamiento”  elegimos  un incremento de 100 MB y en tamaño máximo de archivo lo dejamos con la opción Ilimitado, luego  dar  click en el botón “continuar” y en la  siguiente  ventana  click en el botón  Terminar”, con esto se ha creado el tablespace  que será  usado  por STRMADMIN.
En  la sección “tablespace” ya  aparece el tablespace STREAMS_TBS que  acabamos de crear. 
 
Regresamos  a la sección  principal del Enterprise Manager  y en  luego  elegir  la pestaña  “Servidor”, luego en la  sección “Seguridad”,  elegimos  “Usuarios”.
 
Se  nos  habilita  la siguiente ventana  con todos  los usuarios que existen, hacer click en  el botón “Crear”.

En esta  ventana  configuramos  los datos  para el usuario “STRMADMIN”,  introducimos  el nombre y  la contraseña del nuevo  usuario y en “Tablespace por Defecto”  elegimos  el tablespace STREAMS_TBS que se  creó previamente y  elegimos  “Estado Desbloqueado”, luego click en el botón “Aceptar”.
 
Ahora  buscamos  el  usuario “STRMADMIN”  y verificamos que  se  haya  creado  correctamente  con las opciones que se indicaron en la  ventana  anterior.

 


Ahora debemos  configurar al usuario “STRMADMIN” como superadministrador.
Elegimos  la pestaña  “Servidor”,  luego en la sección “Administración de Enterprise Manager”  hacemos  click en “Usuarios de Enterprise Manager”.
 
En  la  siguiente  ventana  se muestran  los  usuarios que  tienen  privilegios  de “Superadministrador”, actualmente  el usuario “STRMADMIN no  tiene esos  privilegios,  por lo cual  dar click en el botón “Crear”.

 
En esta   ventana  elegimos el nombre del usuario que  queremos dejar como Superadministrador, en este  caso  STRMADMIN y luego en  la  opción privilegios del administrador elegimos “Superadministrador”    luego  click en el botón “Revisar”.
 
Una vez hecho esto se mostraran  los  datos  del usuario que será  configurado como Superadministrador,  si todos  los datos  son correctos, click en el botón “Terminar”.

En esta  ventana  podemos  ver  los usuarios que tienen privilegios de Superadministrador y  podemos comprobar que el usuario “STRMADMIN”  ha sido  configurado  como superadministrador.
 


Concesión de privilegios

Ahora  procedemos a  otorgar los privilegios al usuario para que pueda  realizar el proceso de Streams. Entramos a Sqlplus  como  usuario “sys”  y otorgamos los privilegios. Entre  los  privilegios  más  importantes que se le otorgan tenemos  CAPTURE, PROPAGATION ,  APPLY  ya que estos  son los que se utilizan  durante  el proceso de replicación.
 
También se asignan los privilegios para establecer  conexiones  y se configuran dos variables mediante el comando “ALTER SYSTEM”.
 


CREACIÓN DEL DATABASE LINK


Luego se procede a la creación del Database Link entre serverA y serverB. El Database Link debe ser creado en el esquema del administrador de Oracle Streams del serverA. Además, el DatabaseLink debe conectarse al administrador de Oracle Streams en la base de datos del Serverb.
 Para hacer este paso nos conectamos desde el sqlplus con el usuario STRMADMIN en el SERVERB. Indicamos el nombre del Database Link, el usuario y la contraseña, en este caso se crea un Database
Link para conectarnos al servidor “serverA


 
Esta sería la configuración para la creación del Database Link para el serverA.

 


CREACIÓN DEL ESQUEMA MINITIENDA


Ahora  procedemos  a la  creación del usuario “MINITENDA”, el  cual  contiene  tres  tablas   y será  la  información  con la  cual se  va a demostrar la replicación.
Loguearse  en el SQL Plus  como usuario “STRMADMIN” y  proceder a la creación del nuevo  usuario  mediante  los  siguientes  comandos.
 
 
Aparte de la  creación  también le otorgamos los privilegios de conexión  y recursos  al nuevo usuario.
 
Para la  creación de las tablas  en  el usuario “MINITIENDA”,  nos  conectamos   con el usuario minitienda y  ejecutamos  los  comandos necesarios  para  la creación de las  tablas.
 
También  se  aplican  los  CONSTRAINT  necesarios  tanto para  las llaves  primarias  como para  las llaves  foráneas  con el objetivo de mantener  la  integridad  referencial de la tabla.


 
Hasta este  punto  tenemos  configurados  los  dos  usuarios  para realizar la  replicación, cabe recordar nuevamente que   los  pasos que se han desarrollado  hasta este  momento  son los  mismos  tanto para el servidor serverA  como  para el servidor serverB.

PROCESO DE REPLICACIÓN

Creación de Colas Avanzadas

Los siguientes pasos deben de ser realizados tanto en  serverA y serverB.
Antes de iniciar el proceso de colas se  debe de verificar  el parámetro de inicialización GLOBAL_NAMES.
En el Enterprise Manager  nos  logueamos  con el usuario “STRMADMIN  y  vamos a la pestaña  Servidor  y luego en la sección Configuración de Base de Datos  elegimos  la opción “Parámetros de Inicialización”  para  verificar  si se encuentra en  modo “TRUE”.
 
Para realizar  la replicación  necesitamos crear  colas  avanzadas  para los procesos de apply y capture,  para ello  nos loguearemos  en el Enterprise Manager con el usuario STRADMIN, ya que este  usuario será  el encargado de administrar el proceso de replicación. Después de loguearnos nos dirigimos a  la  pestaña “Movimiento de Datos” y en la sección “Streams  elegimos  la opción “Gestión de Colas Avanzadas”.
 


Luego de esto se habilitara  la  siguiente ventana,  dar click en el botón “Crear”.
 
Elegimos el tipo de cola, en este caso “Cola Normal”  y click en el botón “Continuar”.
 
En  la siguiente  ventana  asignamos  los  parámetros para  la nueva  cola, en este  caso  será  una  cola  para el proceso de apply,  elegimos  el nombre de la tabla  la cual  hace  referencia al esquema donde se almacenaran las colas, luego el usuario al que pertenecen  y podemos agregar  la  descripción,  una vez se hayan  especificado  estos datos dar click al botón “Terminar”.
 
Se  sigue  el mismo  proceso  para  la creación de la cola de CAPTURE.
 
Luego de especificar los  datos de la  cola de CAPTURE, click en  el botón “Terminar  y   nos  mostrara   la lista de las  colas que se han creado.
Podemos   verificar que se han  creado  las  colas  de APPLY y CAPTURE  dentro del  esquema “STRMADMIN”,  cabe destacar que  si  algún  parámetro es erróneo  podemos editar  o suprimir  la cola.

 

 Hasta  este  punto  tenemos  creado  y configurado  el usuario “STRMADMIN” que  será  el encargado de manejar  el proceso de replicación.

Creación  de las Reglas de Apply Procces

Para llevar a cabo el stream es necesario realizar el siguiente procedimiento, dicho procedimiento aplicará las reglas para el proceso de “APPLY” que estará encargado de aplicar las actualizaciones y cambios que se realicen en la base fuente hacia la base destino.
Este paso debe de crearse tanto en el serverA como en el serverB, para esto nos Loguearse en el SQL Plus con el usuario “STRMADMIN”, luego procedemos a la ejecución del código para iniciar el proceso de APPLY.
PROCESO DE APPLY SERVIDOR SERVERA
Creacion del proceso “apply_emp_dep” serverA
 
El parámetro QUEUE_NAME debe hacer referencia la cola que fue creada en el Enterprise Manager, en este caso debe ser “STRMADMIN.APPLY_NAME”, el nombre para dicho proceso, en este caso es “APPLY_EMP_DEP” y el parámetro “APPLY_CAPTURE” se dejara en FALSE debido a que estamos capturando los cambios con Synchronous Capture y no Capture Process.
Para que el APPLY process sea capaz de aplicar los LCR´s en la base destino se debe de añadir reglas de apply en cada tabla de las bases que se deseen replicar. A continuación se muestra la sintaxis necesaria para poder aplicar las reglas a cada tabla de MINITIENDA.
Siempre conectados con el usuario STRADMIN agregamos las reglas de apply para cada tabla del esquema minitienda.
Es necesario especificar el nombre de la tabla, el tipo de stream y el nombre del proceso de stream, en este caso será el proceso creado anteriormente “apply_emp_dep”, además especificamos el nombre de la cola que se va utilizar y el nombre de la base de datos que se utilizara como fuente de datos, es decir hacer referencia al otro servidor.

 Agregación de Reglas de APPLY: SERVERA

 
 

PROCESO DE APPLY SERVIDOR SERVERB

Agregación de Reglas de APPLY: SERVERB
Para el serverB el único  cambio es en el campo source_database,  el cual  debe  hacer  referencia  al servidor serverA.
 
 
 

Proceso de Propagación

El proceso de propagación es el encargado de poner los LCR desde una cola hacia otra, las siguientes reglas determinan que mensajes se van a propagar de un servidor a otro.
Para esto indicamos el nombre de la  tabla,  nombre del proceso de streams en este  caso “send_emp_dep”, indicamos el nombre de la cola que va  utilizar como fuente  y como destino  y el nombre de la base de datos que se usa  como  fuente de  los datos.
PROCESO DE PROPAGACION SERVIDOR: SERVERA


 

 PROCESO DE PROPAGATION SERVIDOR: SERVERB

 
 

Proceso de Captura

El proceso de captura actúa como background process y es el encargado de recolectar los cambios en cada base para luego poner esa información en las colas correspondientes para su posterior propagación. En nuestro caso estamos utilizando captura por SYNCHRONOUS CAPTURE.
En las reglas es necesario indicar el nombre de la tabla, el tipo de streams que se va utiliza, el nombre del proceso de streams, en este caso “sync_capture” y el nombre de la cola que se va utilizar para dicho proceso.


PROCESO DE CAPTURE SERVIDOR: SERVERA

 
PROCESO DE CAPTURE SERVIDOR: SERVERB

 

Proceso de Instanciación

La creación de una instancia SCN para una tabla supone que dicha tabla es consistente en la fuente y en la base destino, por lo tanto antes de que los cambios en la base origen sean capturados y puestos en cola, se debe de crea una instancia SCN de los objetos de la base origen
Lo primero que haremos es capturar el actual SYSTEM_CHANGE_NUMBER de la base de datos origen, este valor es necesario para poder realizar la instanciación en la base de datos destino y filtrar los LCR´s que deben de aplicarse por el Apply process en el destino y cuales deben descartarse.
También vamos a utilizar el procedimiento SET_TABLE_INSTATIATION_SCN para cambiar la instancia en cada tabla del destino. Especificamos los SOURCE_OBJECT_NAME (producto,venta y detalle_venta), SOURCE_DATABASE_NAME(serverA/serverB) y el INSTANTIATION_SCN de la base origen.
PROCESO DE INSTATIATION SERVIDOR: SERVERA


 
PROCESO DE INSTATIATION SERVIDOR: SERVERB


 

 

Iniciando Apply Procces

Como último paso en la configuración de Oracle Stream necesitamos iniciar el proceso de APPLY en cada una de las base, esto se realiza mediante el siguiente procedimiento.

 
Una vez completado este paso la replicación está terminada y ya podremos empezar a realizar las pruebas y ver como los datos se actualizan de manera bidireccional utilizando “ORACLE STREAMS CON CAPTURA SÍNCRONA”.

Link de guia PDF


 


No hay comentarios: