Introducción
La replicación de SQL Server es una función de SQL Server que nos permite transferir datos de una instancia a otra con fines tales como la consolidación de datos en un entorno de generación de informes o migraciones. Personalmente, no consideraría la replicación de SQL Server como una tecnología de alta disponibilidad, aunque algunas personas lo consideren así.
La replicación de SQL Server utiliza términos similares a los de la industria editorial para describir la forma en que se manejan los datos desde el origen hasta el destino. Los términos clave son los siguientes:
- Editor:una instancia de SQL Server que hace que los datos estén disponibles para ser replicados en otras instancias (empaquetados como publicaciones).
- Publicación:una unidad lista para pasar a la instancia receptora compuesta por una colección de artículos que en realidad son objetos de la base de datos.
- Distribuidor:una instancia de SQL Server responsable de almacenar datos asociados con uno o más editores en una base de datos llamada base de datos de distribución . Un distribuidor local se almacena en la misma instancia que el publicador mientras que un distribuidor remoto se encuentra en otra instancia.
- Suscriptor:una instancia que recibe una base de datos replicada. Una suscripción de suscriptor es una solicitud de una copia de publicación que espera recibir del editor.
- Instantánea.
En el artículo, voy a compartir algunos puntos que aprendí al configurar la replicación de SQL Server para admitir un suscriptor heterogéneo. Crearé una publicación y posteriormente una suscripción de Oracle que dependerá de esta publicación. También demostraré algunos puntos junto con el flujo del proceso que son muy importantes para solucionar problemas.
Los pasos para configurar una sesión de replicación de instantáneas son los siguientes:
- Configurar un distribuidor
- Configurar un editor (junto con la publicación, incluidos los artículos que se publican)
- Configurar un suscriptor
Proporcionaré una breve explicación de cada paso.
Configuración de un distribuidor
Un Distribuidor es una instancia responsable de almacenar la información utilizada durante la replicación. Cuando intente crear una publicación en la instancia por primera vez, SQL Server le sugerirá que configure un distribuidor. En este artículo, nuestro Distribuidor es un Distribuidor local .
Crear una publicación
Identifiquemos la base de datos que contiene los objetos que nos gustaría replicar. Esta será una Base de datos de publicación .
Para crear una base de datos de publicaciones, siga las instrucciones en las capturas de pantalla a continuación.
Este paso le permite seleccionar un tipo de publicación que desea configurar. Cada tipo de publicación se describe en el panel inferior. Por razones de simplicidad y compatibilidad, elegimos una publicación instantánea. Tenga en cuenta que pretendemos replicar objetos en una instancia de Oracle. En este caso, Transaccional y Publicaciones Instantáneas son compatibles. Hay otros buenos casos de uso para una replicación de punto a punto y de fusión.
En este paso, elegimos los artículos que queremos publicar. SQL Server nos permite publicar cuatro tipos de objetos clave como:
- Mesas
- Procedimientos almacenados
- Vistas
- Funciones definidas por el usuario
Como puede ver, vamos a publicar dos tablas:Orders y OrderLines. Con el fin de demostrar la flexibilidad de la replicación de SQL Server, filtraremos los registros como se muestra a continuación.
Nota: Estamos interesados en que la cantidad de OrderID sea mayor a 1000.
Para excluir filas no deseadas de las tablas publicadas, haga clic en Agregar... y luego Siguiente .
Las siguientes capturas de pantalla muestran cómo filtrar columnas para la tabla OrderLines.
A continuación, configure las propiedades del Agente de instantáneas. Definimos una instantánea inicial y el intervalo durante el cual se genera una nueva instantánea. Los datos extraídos en este paso se almacenan en un directorio especificado al configurar inicialmente el distribuidor.
En primer lugar, configure una programación para que se inicie un agente de instantáneas. Haga clic en Siguiente .
Para cada agente de instantáneas, especifique la cuenta con la que se ejecutará.
Luego, configure las opciones de seguridad del Agente de instantáneas. La tabla Configuración de seguridad abre otra ventana donde definimos quién ejecuta el proceso del Agente de instantáneas y determinamos los detalles de inicio de sesión de SQL Server para conectarse con el publicador. Hay ciertos permisos requeridos por estos principales que pueden ser un poco dudosos en la producción. El uso de la cuenta del servicio del Agente SQL Server es una solución para evitar complicaciones, pero Microsoft NO la recomienda.
Cerca del final, deberá decidir si desea guardar la configuración como un script para su uso posterior o crear la publicación de inmediato.
El siguiente paso (Fig. 16) resume todas las opciones que ha seleccionado. Se recomienda hacer una revisión rápida antes de hacer clic en Finalizar botón.
Se inicia el proceso de creación de publicación. Puede hacer clic en Detener para interrumpir el proceso.
Una vez que se completa el proceso, su publicación se vuelve visible en el panel Explorador de objetos en SQL Server Management Studio.
Agregar un Suscriptor
Un suscriptor recibe publicaciones puestas a disposición por el Editor . La copia de la publicación que se entregará a un suscriptor se denomina Suscripción . Un editor puede tener muchos suscriptores. Cada
suscriptor recibe los artículos publicados por este Editor como una unidad denominada publicación en lo que respecta al editor y considerada la suscripción del Suscriptor.
Al crear una suscripción, simplemente le decimos al editor:"Quiero tener copias de esta publicación". Así como un editor puede tener muchas publicaciones, también puede haber muchos suscriptores a una
publicación. Por lo tanto, la relación de Editores a Suscriptores es una relación de uno a muchos.
El Asistente de nueva suscripción nos permite decidir a qué publicación nos gustaría suscribirnos. Podemos elegir de una lista de las publicaciones creadas previamente como se muestra en la Fig. 20.
A continuación, decidimos si queremos ejecutar una suscripción push en lugar de una suscripción pull. Si bien una suscripción de extracción es mejor para el rendimiento cuando prevé varios suscriptores, no funcionará para una replicación de base de datos heterogénea. Los suscriptores que no son de SQL Server deben usar una suscripción de extracción. Vale la pena mencionar que los artículos publicados en este escenario también están limitados a tablas y vistas indexadas.
Agregue un suscriptor de Oracle utilizando un nombre de fuente de datos (DSN). Este DSN ya debe haberse creado, probado y comprobado que funciona en términos de poder conectarse a la instancia de Oracle a través de Oracle Net. Esto significa que necesita un cliente de Oracle instalado en el host de SQL Server con una entrada a un archivo llamado tnsnames.ora definiendo el destino de la conexión. Esta entrada TNS se utiliza a su vez para configurar el nombre de la fuente de datos que solicita el asistente de nueva suscripción en esta etapa.
La entrada que he creado en mi archivo tnsnames.ora se ve así:
ORCL10G = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = IGIRI-LP)(PORT = 1522)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl10g) ) )
La parte resaltada es el alias, mientras que los demás detalles definen el destino de la conexión. Podemos confirmar si esta entrada funciona correctamente y si mis variables de entorno de Oracle están configuradas correctamente usando tnsping utilidad como se muestra a continuación.
Una vez confirmada, esta entrada TNS se utiliza para configurar el DSN que pretendemos utilizar. Nuestro nombre de servicio TNS se llama ORCL10G mientras que el DSN se llama ORCLDC . Es el DSN que usamos en el Asistente para nueva suscripción.
Tenga en cuenta que hemos utilizado la versión de 64 bits de ODBC para configurar el DSN y es un DSN de sistema, no un DSN de usuario. La configuración no depende de quién haya iniciado sesión en la computadora.
Seleccione un tipo de suscriptor para agregar e ingrese el nombre de la fuente de datos. Haz clic en Aceptar .
Elija uno o varios suscriptores, así como especifique una base de datos para cada suscripción.
Una vez que se agrega el DSN, podemos continuar con la configuración de la seguridad del agente de distribución. Descubrimos que esto es similar al caso cuando configuramos un Snapshot Agent Security en el Asistente para nueva publicación.
Aquí, sin embargo, tenemos una sección donde establecemos una conexión con el Suscriptor en lugar de al Editor (recordemos que se trata de una suscripción push). Esta cuenta de usuario debe haberse creado en la instancia de Oracle y debe tener privilegios para crear tablas y cuotas en su tablespace predeterminado (aquí es posible que necesite un DBA de Oracle).
Agregue parámetros a la seguridad del agente de distribución y haga clic en Aceptar .
Especifique las opciones de cuenta y conexión para cada agente de distribución y haga clic en Siguiente .
Defina el cronograma de sincronización para cada agente. En nuestro caso, optamos por sincronizar continuamente. Haga clic en Siguiente .
Seleccione la opción para inicializar la suscripción inmediatamente, lo que significa copiar TODOS los datos disponibles en la carpeta Instantánea nuevamente. Se recomienda a los suscriptores de NoSQL Server que reinicialicen la suscripción cuando se agreguen nuevos artículos a la publicación. Haga clic en Siguiente .
Seleccione las opciones que se realizarán después de que el proceso se complete con éxito. Haga clic en Siguiente .
Verifique la información que agregó y haga clic en Finalizar .
Se ejecuta el proceso de creación de suscripción.
La suscripción que acabamos de crear muestra una entrada en el Explorador de objetos (en el publicador) asignada a su publicación principal. Tenga en cuenta que no aparece en el nodo Suscripciones locales que le proporciona una lista de suscripciones creadas en la instancia actual que no está en este caso.
Supervisión y solución de problemas
SQL Server proporciona el Monitor de replicación para revisar y monitorear los detalles de todas las sesiones de replicación en la instancia. El Monitor de replicación puede informar al administrador cuando el Agente de instantáneas se ejecuta y finaliza. También puede mostrarnos si las Suscripciones están inicializadas y si el Agente de distribución funciona sin problemas.
Hay ocho trabajos del Agente SQL Server asociados con nuestra configuración actual. Ver el historial de estos trabajos también brinda detalles sobre si todo está bien.
Los errores reales de Oracle se enumeran en el Monitor de replicación y en el registro de errores de SQL Server cuando se encuentran. Este nivel de detalles hace que la replicación de SQL Server sea interesante para solucionar problemas. Tener un conocimiento de Oracle (para el DBA de SQL Server) le llevará mucho tiempo en la comprensión de los errores que podrían surgir.
Mire el ejemplo del error en la Fig. 34. Este error ocurrió antes de que los entornos Oracle Net y ODBC estuvieran configurados correctamente. Los errores dan una indicación muy clara de dónde está el problema.
La vista del Monitor de actividad del trabajo también nos informa qué trabajos tienen éxito y qué trabajos necesitamos solucionar en detalle mediante el examen del Historial de trabajos.
Una vez que se resuelven todos los errores anteriores, abrir una suscripción haciendo doble clic nos brinda una vista detallada de todas las sesiones, errores y resultados que esperamos ver cuando todo esté bien. Observe que Agent Bulk copia datos del publicador al suscriptor en lotes. También podemos consultar las tablas que se han creado en la instancia de Oracle y comparar los registros. (fig. 37).
Como puede ver, SQL Server prepara la tabla excluyendo el esquema de origen (Ventas) antes de crear la tabla en Oracle y copiar los datos.
El recuento de registros en la instancia de Oracle coincide con el de la tabla de origen y tiene en cuenta el hecho de que filtramos la tabla OrderLines para ID de pedidos superiores a 1000.
Conclusión
Hemos repasado brevemente el proceso de configuración de la replicación de bases de datos heterogéneas con una instancia de Oracle como suscriptor. Aunque Microsoft está dejando de utilizar gradualmente esta opción, hay casos de uso que aún podrían beneficiarse de las capacidades proporcionadas por esta característica antigua de SQL Server. La sección de Referencias proporciona una lectura más amplia sobre el tema que creo que será útil para aquellos que quieran practicar más.
Referencias
Configurar la replicación para grupos de disponibilidad siempre activos
Suscriptores que no son de Oracle
Replicación de bases de datos heterogéneas
Suscriptores de Oracle