Compartir a través de


Consideraciones y limitaciones de diseño para publicadores de Oracle

La publicación desde una base de datos de Oracle está diseñada para funcionar casi de forma idéntica a la publicación desde una base de datos de Microsoft SQL Server. Sin embargo, debe tener en cuenta las siguientes limitaciones y problemas:

  • La opción Puerta de enlace de Oracle proporciona un rendimiento mejorado sobre la opción Oracle Complete; sin embargo, esta opción no se puede usar para publicar la misma tabla en varias publicaciones transaccionales. Una tabla puede aparecer como máximo en una publicación transaccional y en cualquier número de publicaciones de instantáneas. Si necesita publicar la misma tabla en varias publicaciones transaccionales, elija la opción Completar de Oracle.

  • La replicación admite la publicación de tablas, índices y vistas materializadas. Otros objetos no se replican.

  • Hay algunas pequeñas diferencias entre el almacenamiento y el procesamiento de datos en las bases de datos de Oracle y SQL Server que afectan a la replicación.

  • Hay varias diferencias en la forma en que se admiten las características de replicación transaccional al usar un publicador de Oracle.

Compatibilidad con la publicación de objetos desde Oracle

La replicación admite la replicación de los siguientes objetos de bases de datos de Oracle:

  • Tablas

  • Tablas organizadas por índices

  • Índices

  • Vistas materializadas (se replican como tablas)

Lo siguiente puede estar presente en las tablas publicadas, pero no se replican:

  • Índices basados en dominio

  • Índices basados en funciones

  • Valores predeterminados

  • Restricciones CHECK

  • Claves externas

  • Opciones de almacenamiento (espacios de tablas, clústeres, etc.)

No se pueden replicar los objetos siguientes:

  • Tablas anidadas

  • Vistas

  • Paquetes, cuerpos de paquete, procedimientos y desencadenadores

  • Colas

  • Secuencias

  • Sinónimos

Para obtener información sobre los tipos de datos admitidos, consulte Asignación de tipos de datos para publicadores de Oracle.

Diferencias entre Oracle y SQL Server

  • Oracle tiene diferentes límites de tamaño máximo para algunos objetos. Los objetos creados en la base de datos de publicación de Oracle deben cumplir los límites de tamaño máximo para los objetos correspondientes en SQL Server. Para obtener información sobre los límites en SQL Server, vea Especificaciones de capacidad máxima para SQL Server.

  • De forma predeterminada, los nombres de objeto de Oracle se crean en mayúsculas. Asegúrese de proporcionar los nombres de los objetos de Oracle en mayúsculas al publicarlos a través de un distribuidor de SQL Server si están en mayúsculas en la base de datos de Oracle. Si no se especifican los objetos en el caso correcto, se puede producir un mensaje de error que indica que no se encuentra el objeto.

  • Oracle tiene un dialecto SQL ligeramente diferente de SQL Server; Los filtros de fila deben escribirse en la sintaxis compatible con Oracle.

Consideraciones para objetos grandes

Los datos de objetos grandes (LOB) no se almacenan en la tabla de registro del artículo; Las actualizaciones de los datos loB siempre se recuperan directamente de la tabla publicada. Las actualizaciones se replican en publicaciones transaccionales solo si la operación que afecta al LOB desencadena el desencadenador de replicación en la tabla replicada. Los desencadenadores de Oracle se activan cuando se insertan o eliminan filas que contienen LOB; sin embargo, las actualizaciones de las columnas LOB no activan desencadenadores. Una actualización de una columna LOB se replicará inmediatamente solo si también se actualiza una columna que no sea loB de la misma fila en la misma transacción de Oracle. Si no es así, la columna LOB se actualizará en el suscriptor cuando se produzca la siguiente actualización a una columna que no sea LOB en la misma fila. Asegúrese de que este comportamiento es aceptable para la aplicación.

Para replicar actualizaciones en columnas LOB en publicaciones transaccionales, considere una de las estrategias siguientes al escribir la aplicación:

  • Elimine y vuelva a insertar las filas dentro de una transacción en lugar de actualizar la fila: especifique el nuevo LOB al volver a insertar la fila. Dado que eliminar e insertar ambos desencadenadores de activación, se replicará la fila.

  • Incluya una columna que no sea LOB en la actualización de fila además de la columna LOB o actualice una columna que no sea LOB de la fila como parte de la misma transacción de Oracle. En ambos casos, la actualización de la columna no LOB garantiza que el desencadenador se active.

Para obtener más información sobre los LOB, consulte Asignación de tipos de datos para publicadores de Oracle.

Índices y restricciones únicos

Para la replicación tanto de instantáneas como de transacciones, las columnas contenidas en índices y restricciones únicos (incluidas las restricciones de clave principal) deben seguir ciertas normas. Si no cumplen estas restricciones, la restricción o el índice no se replican.

  • El número máximo de columnas permitidas en un índice en SQL Server es 16.

  • Todas las columnas incluidas en restricciones únicas deben tener tipos de datos admitidos. Para obtener más información sobre los tipos de datos, consulte Asignación de tipos de datos para publicadores de Oracle.

  • Todas las columnas incluidas en restricciones únicas deben publicarse (no se pueden filtrar).

  • Las columnas implicadas en restricciones o índices únicos no deben ser NULL.

Tenga en cuenta también los siguientes problemas:

  • Oracle y SQL Server tratan NULL de forma diferente: Oracle permite varias filas con valores NULL para columnas que permiten NULL y se incluyen en restricciones o índices únicos. SQL Server aplica la unicidad al permitir solo una sola fila con un valor NULL para la misma columna. No se puede publicar una restricción o índice único que permita NULL porque se produciría una infracción de restricción en el suscriptor si la tabla publicada contiene varias filas con valores NULL para cualquiera de las columnas incluidas en el índice o restricción.

  • Al comprobar la unicidad, SQL Server omite los espacios en blanco finales de un campo, pero Oracle no.

Al igual que en la replicación transaccional de SQL Server, las tablas de las publicaciones transaccionales de Oracle requieren una clave principal; la clave principal debe ser única en función de las reglas especificadas anteriormente. Si la clave principal no cumple las reglas descritas en las viñetas anteriores, la tabla no se puede publicar para la replicación transaccional.

Diferencias entre la publicación de Oracle y la replicación transaccional estándar

  • Un publicador de Oracle no puede tener el mismo nombre que: su distribuidor de SQL Server; cualquiera de los publicadores de SQL Server que usan el distribuidor; o cualquier suscriptor que reciba la publicación. Las publicaciones administradas por el mismo distribuidor deben tener un nombre único.

  • Una tabla publicada en una publicación de Oracle no puede recibir datos replicados. Por lo tanto, la publicación de Oracle no admite: publicaciones con suscripciones de actualización inmediata o en cola; o topologías en las que las tablas de publicación también actúan como tablas de suscripción, como la replicación punto a punto y bidireccional.

  • Las relaciones de clave primaria a clave externa en la base de datos de Oracle no se replican a los Suscriptores. Sin embargo, las relaciones se mantienen en los datos a medida que se entregan los cambios.

  • Las publicaciones transaccionales estándar admiten tablas de hasta 1000 columnas. Las publicaciones transaccionales de Oracle admiten 995 columnas (la replicación agrega cinco columnas a cada tabla publicada).

  • Las cláusulas de intercalación se agregan a las instrucciones CREATE TABLE para habilitar comparaciones que distinguen entre mayúsculas y minúsculas, lo cual es crucial para las claves primarias y las restricciones únicas. Este comportamiento se controla con la opción de esquema 0x1000, que se especifica con el parámetro @schema_option de sp_addarticle (Transact-SQL).

  • Si usa procedimientos almacenados para configurar o mantener un publicador de Oracle, no coloque los procedimientos dentro de una transacción explícita. Esto no se admite en el servidor vinculado que se usa para conectarse al publicador de Oracle.

  • Si crea una suscripción de extracción a una publicación de Oracle con un asistente, debe usar el Asistente para Nueva Suscripción proporcionado con SQL Server 2005 y versiones posteriores. Sin embargo, para versiones anteriores de SQL Server, puede usar el procedimiento almacenado y la interfaz SQL-DMO para establecer suscripciones de extracción en publicaciones de Oracle.

  • Si usa procedimientos almacenados para propagar los cambios a los suscriptores (valor predeterminado), tenga en cuenta que se admite la sintaxis MCALL, pero tiene un comportamiento diferente cuando la publicación procede de un publicador de Oracle. Normalmente, MCALL proporciona un mapa de bits que muestra qué columnas se actualizaron en el publicador. Con una publicación de Oracle, el mapa de bits siempre muestra que todas las columnas se actualizaron. Para obtener más información sobre el uso de procedimientos almacenados, vea Especificar cómo se propagan los cambios para artículos transaccionales.

Compatibilidad con características de replicación transaccional

  • Las publicaciones de Oracle no admiten todas las opciones de esquema que admiten las publicaciones de SQL Server. Para obtener más información sobre las opciones de esquema, vea sp_addarticle (Transact-SQL).

  • Los suscriptores a publicaciones de Oracle no pueden usar suscripciones de actualización inmediata o de actualización en cola, ni ser nodos en una topología punto a punto o bidireccional.

  • Los suscriptores a publicaciones de Oracle no se pueden inicializar automáticamente desde una copia de seguridad.

  • SQL Server admite dos tipos de validación: binary y rowcount. Los publicadores de Oracle admiten la validación de recuento de filas. Para obtener más información, consulte Validar datos replicados.

  • SQL Server ofrece dos formatos de instantánea: modo bcp nativo y modo de caracteres. Los publicadores de Oracle admiten instantáneas en modo de caracteres.

  • No se admiten cambios de esquema en las tablas de Oracle publicadas. Para realizar cambios en el esquema, quite primero la publicación, realice los cambios y, a continuación, vuelva a crear la publicación y todas las suscripciones.

    Nota:

    Si el esquema cambia y la eliminación y la nueva creación posteriores de la publicación y las suscripciones se realizan en un momento en el que no se produce ninguna actividad en las tablas publicadas, puede especificar la opción "solo soporte de replicación" para las suscripciones. Esto les permite sincronizarse sin tener que copiar una instantánea en cada Suscriptor. Para obtener más información, vea Inicializar una suscripción transaccional sin una instantánea.

Modelo de seguridad de replicación

El modelo de seguridad para la publicación de Oracle es el mismo que el modelo de seguridad para la replicación transaccional estándar, con las siguientes excepciones:

Para obtener más información sobre la seguridad de replicación, consulte Seguridad de replicación de SQL Server.

Véase también

Consideraciones administrativas para publicadores de Oracle
Configuración de un publicador de Oracle
Información general sobre la publicación de Oracle