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
Link de guia PDF
No hay comentarios:
Publicar un comentario