Asignar tipos de datos para publicadores de Oracle

Se aplica a:SQL Server

Los tipos de datos de Oracle y los de Microsoft SQL Server no siempre coinciden exactamente. En la medida de lo posible, el tipo de datos coincidentes se selecciona automáticamente al publicar en una tabla Oracle. En los casos en que no queda clara una asignación de tipos de datos única, se proporcionan asignaciones alternativas de tipos de datos. Para obtener información acerca de cómo seleccionar asignaciones alternativas, vea la sección "Especificar asignaciones de tipos de datos alternativas" más adelante en este tema.

En la siguiente tabla se muestra cómo se asignan los tipos de datos de manera predeterminada entre Oracle y SQL Server cuando se mueven datos del publicador de Oracle al distribuidor de SQL Server. La columna Alternativas indica si existen asignaciones alternativas disponibles.

Tipo de datos de Oracle Tipos de datos de SQL Server Alternativas
BFILE VARBINARY(MAX)
BLOB VARBINARY(MAX)
CHAR([1-2000]) CHAR([1-2000])
CLOB VARCHAR(MAX)
FECHA DATETIME
FLOAT FLOAT No
FLOAT([1-53]) FLOAT([1-53]) No
FLOAT([54-126]) FLOAT No
INT NUMERIC(38)
INTERVAL DATETIME
LONG VARCHAR(MAX)
LONG RAW IMAGE
NCHAR([1-1000]) NCHAR([1-1000]) No
NCLOB NVARCHAR(MAX)
NUMBER FLOAT
NUMBER([1-38]) NUMERIC([1-38]) No
NUMBER([0-38],[1-38]) NUMERIC([0-38],[1-38])
NVARCHAR2([1-2000]) NVARCHAR([1-2000]) No
RAW([1-2000]) VARBINARY([1-2000]) No
real FLOAT No
ROWID CHAR(18) No
TIMESTAMP DATETIME
MARCA DE TIEMPO(0-7) DATETIME
TIMESTAMP(8-9) DATETIME
MARCA DE TIEMPO (0-7) CON ZONA HORARIA VARCHAR(37)
MARCA DE TIEMPO (8-9) CON ZONA HORARIA VARCHAR(37) No
MARCA DE TIEMPO (0-7) CON ZONA HORARIA LOCAL VARCHAR(37)
MARCA DE TIEMPO (8-9) CON ZONA HORARIA LOCAL VARCHAR(37) No
UROWID CHAR(18) No
VARCHAR2([1-4000]) VARCHAR([1-4000])

Consideraciones para la asignación de tipos de datos

Tenga en cuenta los siguientes problemas de tipos de datos al replicar datos desde una base de datos de Oracle.

Tipos de datos no admitidos

Los siguientes tipos de datos no son compatibles; las columnas que tienen estos tipos de datos no se pueden replicar:

  • Tipos de objeto

  • Tipos XML

  • Valores Varray

  • Tablas anidadas

  • Columnas que utilizan REF

Tipo de datos DATE

Las fechas de SQL Server oscilan entre 1753 D.C. y 9999 D.C., mientras que las fechas de Oracle oscilan entre 4712 A.C. y 4712 D.C. Si una columna de tipo DATE contiene valores que están fuera del intervalo para SQL Server, seleccione el tipo de datos alternativo para la columna, que es VARCHAR(19).

Tipos FLOAT y NUMBER

La escala y precisión especificadas durante la asignación de tipos de datos FLOAT y NUMBER depende de la escala y precisión especificadas para la columna mediante el tipo de datos de la base de datos de Oracle. La precisión es el número de dígitos de un número. La escala es el número de dígitos situados a la derecha de la coma decimal de un número. Por ejemplo, el número 123,45 tiene una precisión de 5 y una escala de 2.

Oracle permite que se definan números con una escala mayor que la precisión, como NUMBER(4,5), pero SQL Server requiere que la precisión sea igual o mayor que la escala. Para garantizar que no hay truncamiento de datos, si la escala es mayor que la precisión en el publicador de Oracle, se define la precisión para que sea igual a la escala al asignar el tipo de datos: NUMBER(4,5) se asignaría como NUMERIC(5,5).

Nota:

Si no se especifica una escala y una precisión para NUMBER, SQL Server utiliza de manera predeterminada la escala (8) y precisión (38) máximas. Recomendamos definir una escala y precisión específicas en Oracle para mejorar el almacenamiento y el rendimiento al replicar los datos.

Tipos de objetos grandes

Oracle admite hasta 4 gigabytes (GB), mientras que SQL Server admite hasta 2 GB. Los datos replicados por encima de 2 GB se truncan.

Si una tabla Oracle incluye una columna BFILE, los datos de la columna se almacenan en el sistema de archivos. La cuenta de usuario administrativo de la replicación debe tener acceso al directorio en el que se almacenan los datos, con la siguiente sintaxis:

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Para obtener más información sobre los tipos de objetos grandes, vea la sección sobre consideraciones para los objetos grandes en el tema Consideraciones y limitaciones de diseño de los publicadores de Oracle.

Especificar asignaciones de tipos de datos alternativas

Normalmente, la asignación de tipos de datos predeterminada es adecuada, pero para muchos tipos de datos de Oracle puede seleccionar una asignación de tipos de datos entre un conjunto de asignaciones alternativas en lugar de utilizar la opción predeterminada. Hay dos formas de especificar asignaciones alternativas:

  • Reemplazar la opción predeterminada artículo por artículo utilizando procedimientos almacenados o el Asistente para nueva publicación.

  • Cambiar de forma global la opción predeterminada para todos los artículos futuros utilizando procedimientos almacenados (los valores predeterminados no se cambian para los artículos existentes).

Para especificar asignaciones de datos alternativas, vea Especificar asignaciones de tipos de datos para un publicador de Oracle.

Consulte también

Configurar un publicador de Oracle
Consideraciones y limitaciones de diseño de los publicadores de Oracle
Información general de la publicación de Oracle