Suscriptores de Oracle

A partir de SQL Server 2005, SQL Server admite las suscripciones de inserción a Oracle a través del proveedor Oracle OLE DB suministrado por Oracle.

Configurar un suscriptor de Oracle

Para configurar un suscriptor de Oracle, siga estos pasos:

  1. Instale y configure el software de red de cliente de Oracle y el proveedor OLE DB de Oracle en el distribuidor de SQL Server, a fin de que el distribuidor pueda realizar conexiones al suscriptor de Oracle. Debe utilizarse la versión más reciente del software de red de cliente de Oracle. Oracle recomienda que los usuarios instalen las versiones más recientes del software de cliente. Por tanto, la versión del software de cliente suele ser más reciente que la del software de base de datos. La manera más sencilla de instalar el software es utilizar Oracle Universal Installer, que se encuentra en el disco de cliente de Oracle. En Oracle Universal Installer proporcione la siguiente información:

    Información

    Descripción

    Oracle Home (Directorio de inicio de Oracle)

    Es la ruta de acceso al directorio de instalación del software de Oracle. Acepte el valor predeterminado (C:\oracle\ora90 o similar) o escriba otra ruta de acceso. Para obtener más información sobre el directorio de inicio de Oracle, vea la sección "Consideraciones sobre el directorio de inicio de Oracle" más adelante en este tema.

    Oracle home name (Nombre del directorio de inicio de Oracle)

    Un alias para la ruta de acceso del directorio de inicio de Oracle.

    Installation type (Tipo de instalación)

    En Oracle 10g, seleccione la opción de instalación Runtime (Biblioteca de tiempo de ejecución) o Administrator (Administrador).

  2. Muestra un nombre TNS para el suscriptor. TNS (Transparent Network Substrate, Sustrato de red transparente) es una capa de comunicación que utilizan las bases de datos Oracle. TNS Service Name es el nombre por el que se conocen las instancias de una base de datos Oracle en una red. El nombre de servicio TNS se asigna al configurar la conectividad a la base de datos de Oracle. La replicación utiliza el nombre de servicio TNS para identificar al suscriptor y establecer las conexiones.

    Una vez finalizada la instalación con Oracle Universal Installer, utilice Net Configuration Assistant para configurar la conectividad de red. Debe proporcionar cuatro grupos de información para configurar la conectividad de red. El administrador de base de datos de Oracle configura la red al instalar la base de datos y la escucha, y debería poder proporcionar esta información si el usuario no la tiene. Debe realizar las siguientes acciones:

    Acción

    Descripción

    Identificar la base de datos

    Existen dos métodos para identificar la base de datos. El primer método utiliza el Identificador de sistema (SID) de Oracle y está disponible en cada versión de Oracle. El segundo método utiliza el Nombre de servicio, que está disponible a partir de Oracle versión 8.0. Los dos métodos utilizan un valor que se configura al crear la base de datos y es importante que la configuración de red de cliente use el mismo método de nomenclatura que utilizó el administrador al configurar la escucha para la base de datos.

    Identificar un alias de red para la base de datos

    Se debe especificar un alias de red, que se utilizará para tener acceso a la base de datos de Oracle. El alias de red es básicamente un puntero al SID o al Nombre de servicio remoto que se configuró al crear la base de datos; tiene nombres distintos en las diferentes versiones y productos de Oracle, incluidos Net Service Name y TNS Alias. SQL*Plus solicita este alias como el parámetro "Host String" (Cadena de host) cuando se inicia la sesión.

    Seleccionar el protocolo de red

    Seleccione los protocolos que desee admitir. La mayoría de aplicaciones utilizan TCP.

    Especificar la información de host para identificar las escuchas de base de datos

    El host es el nombre o el alias de DNS del equipo donde se está ejecutando la escucha de Oracle, que normalmente es el mismo equipo donde reside la base de datos. En algunos protocolos, se debe proporcionar información adicional. Por ejemplo, si se selecciona TCP, se debe proporcionar el puerto donde se escuchan las solicitudes de conexión a la base de datos de destino. La configuración predeterminada de TCP utiliza el puerto 1521.

  3. Cree una instantánea o publicación transaccional, habilítela para suscriptores que no sean de SQL Server y, a continuación, cree una suscripción de inserción para el suscriptor. Para obtener más información, vea:

Configurar permisos de directorio

A la cuenta con la que se ejecuta el servicio SQL Server en el distribuidor deben concederse permisos de lectura y ejecución para el directorio (y todos los subdirectorios) en el que esté instalado el software de red de cliente de Oracle.

Comprobar la conectividad entre el distribuidor de SQL Server y el publicador de Oracle

Casi al final del asistente para configuración de redes puede que aparezca una opción para comprobar la conexión al publicador de Oracle. Antes de comprobar la conexión, asegúrese de que la instancia de la base de datos de Oracle está en línea y que la Escucha de Oracle está ejecutándose. Si la comprobación no es correcta, póngase en contacto con el administrador de bases de datos de Oracle responsable de la base de datos a la intenta conectarse.

Después de realizar una conexión correcta al publicador de Oracle, intente iniciar la sesión en la base de datos con la cuenta y la contraseña configurados para el Agente de distribución de la suscripción.

  1. Haga clic en Inicio y, a continuación, en Ejecutar.

  2. Escriba cmd y haga clic en Aceptar.

  3. En el símbolo del sistema, escriba:

    sqlplus <UserSchemaLogin>/<UserSchemaPassword>@<NetServiceName>

    Por ejemplo: sqlplus replication/$tr0ngPasswerd@Oracle90Server

  4. Si la configuración de red es correcta, se iniciará la sesión y verá el símbolo de SQL.

Consideraciones sobre el directorio de inicio de Oracle

Oracle admite la instalación paralela de archivos binarios de aplicaciones, pero la replicación solo puede utilizar un conjunto de archivos binarios a la vez. Cada conjunto de archivos binarios está asociado a un directorio de inicio de Oracle; los archivos binarios se encuentran en el directorio %ORACLE_HOME%\bin. Debe asegurarse de que se utiliza el conjunto de archivos binarios correcto (concretamente, la versión más reciente del software de red de cliente) cuando la replicación realiza las conexiones al publicador de Oracle.

Inicie la sesión en el distribuidor con las cuentas que utiliza el servicio SQL Server y el servicio del Agente SQL Server, y establezca las variables de entorno apropiadas. Debe establecerse la variable %ORACLE_HOME% para hacer referencia al punto de instalación que ha especificado al instalar el software de red de cliente. La variable %PATH% debe incluir el directorio %ORACLE_HOME% \bin como la primera entrada de Oracle que se encuentre. Para obtener información sobre cómo establecer variables de entorno, vea la documentación de Windows.

Nota

Si tiene más de un directorio de inicio de Oracle en el distribuidor de SQL Server, asegúrese de que el Agente de distribución está utilizando el proveedor Oracle OLE DB más reciente. En algunos casos, Oracle no actualiza el proveedor OLE DB de manera predeterminada cuando se actualizan los componentes de cliente en el distribuidor de SQL Server. Desinstale el proveedor OLE DB antiguo e instale la versión más reciente. Para obtener más información acerca de cómo instalar y desinstalar el proveedor, vea la documentación de Oracle.

Consideraciones sobre los suscriptores de Oracle

Además de las consideraciones incluidas en el tema Suscriptores que no son de SQL Server, tenga en cuenta los siguientes aspectos al replicar en suscriptores de Oracle:

  • Oracle trata tanto las cadenas vacías como los valores NULL como NULL. Esto es importante si se define una columna de SQL Server como NOT NULL, y se replica la columna en un suscriptor de Oracle. Para evitar errores al aplicar cambios en el suscriptor de Oracle, debe realizar una de las siguientes acciones:

    • Asegúrese de que las cadenas vacías no se insertan como valores de columna en la tabla publicada.

    • Utilice el parámetro –SkipErrors para el Agente de distribución si es aceptable recibir una notificación de errores en el registro de historial del Agente de distribución y continuar el procesamiento. Especifique el código de error 1400 de Oracle (-SkipErrors1400). Para obtener más información acerca de este parámetro, vea Omitir errores en la replicación transaccional.

    • Modifique el script de la tabla generada, quitando el atributo NOT NULL de cualquier columna de caracteres a la que puedan haberse asociado cadenas vacías, y suministre el script modificado como script personalizado para el artículo mediante el parámetro sp_addarticle.

  • Los suscriptores de Oracle admiten la opción de esquema 0x4071. Para obtener más información acerca de las opciones de esquema, vea sp_addarticle (Transact-SQL).

Asignar tipos de datos desde SQL Server a Oracle

En la tabla siguiente se muestran las asignaciones de tipos de datos que se utilizan cuando se replican datos en un suscriptor que está ejecutando Oracle.

Tipo de datos SQL Server

Tipo de datos de Oracle

bigint

NUMBER(19,0)

binary(1-2000)

RAW(1-2000)

binary(2001-8000)

BLOB

bit

NUMBER(1)

char(1-2000)

CHAR(1-2000)

char(2001-4000)

VARCHAR2(2001-4000)

char(4001-8000)

CLOB

date

DATE

datetime

DATE

datetime2(0-7)

TIMESTAMP(7) para Oracle 9 y Oracle 10; VARCHAR(27) para Oracle 8

datetimeoffset(0-7)

TIMESTAMP(7) WITH TIME ZONE para Oracle 9 y Oracle 10; VARCHAR(34) para Oracle 8

decimal(1-38, 0-38)

NUMBER(1-38, 0-38)

float(53)

FLOAT

float

FLOAT

geography

BLOB

geometry

BLOB

hierarchyid

BLOB

image

BLOB

int

NUMBER(10,0)

money

NUMBER(19,4)

nchar(1-1000)

CHAR(1-1000)

nchar(1001-4000)

NCLOB

ntext

NCLOB

numeric(1-38, 0-38)

NUMBER(1-38, 0-38)

nvarchar(1-1000)

VARCHAR2(1-2000)

nvarchar(1001-4000)

NCLOB

nvarchar(max)

NCLOB

real

REAL

smalldatetime

DATE

smallint

NUMBER(5,0)

smallmoney

NUMBER(10,4)

sql_variant

N/D

sysname

VARCHAR2(128)

text

CLOB

time(0-7)

VARCHAR(16)

timestamp

RAW (8)

tinyint

NUMBER(3,0)

uniqueidentifier

CHAR(38)

varbinary(1-2000)

RAW(1-2000)

varbinary(2001-8000)

BLOB

varchar(1-4000)

VARCHAR2(1-4000)

varchar(4001-8000)

CLOB

varbinary(max)

BLOB

varchar(max)

CLOB

xml

NCLOB