Mappage de type de données pour les serveurs de publication Oracle

S’applique à :SQL Server

Les types de données Oracle et les types de données Microsoft SQL Server ne correspondent pas toujours exactement. Dans la mesure du possible, le type de données correspondant est sélectionné automatiquement lors de la publication d'une table Oracle. Dans les cas où un mappage de type de données simple n'est pas clair, des mappages de type de données de remplacement sont fournis. Pour plus d'informations sur la sélection de mappages de remplacement, consultez la section « Spécification de mappages de type de données de remplacement » plus loin dans cette rubrique.

Le tableau suivant montre comment les types de données sont mappés par défaut entre Oracle et SQL Server lorsque les données sont déplacées du serveur de publication Oracle vers le serveur de distribution SQL Server. La colonne Alternatives indique si des mappages de remplacement sont disponibles.

Type de données Oracle Type de données SQL Server Autres solutions
BFILE VARBINARY(MAX) Oui
BLOB VARBINARY(MAX) Oui
CHAR([1-2000]) CHAR([1-2000]) Oui
CLOB VARCHAR(MAX) Oui
DATE DATETIME Oui
FLOAT FLOAT Non
FLOAT([1-53]) FLOAT([1-53]) Non
FLOAT([54-126]) FLOAT Non
INT NUMERIC(38) Oui
INTERVAL DATETIME Oui
LONG VARCHAR(MAX) Oui
LONG RAW IMAGE Oui
NCHAR([1-1000]) NCHAR([1-1000]) Non
NCLOB NVARCHAR(MAX) Oui
NUMBER FLOAT Oui
NUMBER([1-38]) NUMERIC([1-38]) Non
NUMBER([0-38],[1-38]) NUMERIC([0-38],[1-38]) Oui
NVARCHAR2([1-2000]) NVARCHAR([1-2000]) Non
RAW([1-2000]) VARBINARY([1-2000]) Non
real FLOAT Non
ROWID CHAR(18) Non
timestamp DATETIME Oui
TIMESTAMP(0-7) DATETIME Oui
TIMESTAMP(8-9) DATETIME Oui
TIMESTAMP(0-7) WITH TIME ZONE VARCHAR(37) Oui
TIMESTAMP(8-9) WITH TIME ZONE VARCHAR(37) Non
TIMESTAMP(0-7) WITH LOCAL TIME ZONE VARCHAR(37) Oui
TIMESTAMP(8-9) WITH LOCAL TIME ZONE VARCHAR(37) Non
UROWID CHAR(18) Non
VARCHAR2([1-4000]) VARCHAR([1-4000]) Oui

Règles de mappage des types de données

Tenez compte des problèmes de type de données suivants lors de la réplication de données d'une base de données Oracle.

Types de données non pris en charge

Les types de données suivants ne sont pas pris en charge ; les colonnes de ces types ne peuvent pas être répliquées :

  • Types d’objets

  • Types XML

  • Varrays

  • Tables imbriquées

  • Colonnes utilisant REF

Le type de données DATE

Les dates dans SQL Server vont de 1753 A.D. à 9999 A.D., tandis que les dates dans Oracle sont comprises entre 4712 B.C. et 4712 A.D. Si une colonne de type DATE contient des valeurs hors limites pour SQL Server, sélectionnez l’autre type de données pour la colonne, qui est VARCHAR(19).

Types FLOAT et NUMBER

L'échelle et la précision spécifiées lors du mappage des types de données FLOAT et NUMBER dépendent de l'échelle et de la précision spécifiées pour la colonne utilisant le type de données dans la base de données Oracle. La précision est le nombre de chiffres qui composent un nombre. L'échelle est le nombre de chiffres à droite du séparateur décimal dans un nombre. Par exemple, le nombre 123,45 a une précision de 5 et une échelle de 2.

Oracle permet de définir des nombres avec une échelle supérieure à la précision, telle que NU Mo ER(4,5), mais SQL Server exige que la précision soit égale ou supérieure à l’échelle. Afin d'éviter les troncations de données, si l'échelle est supérieure à la précision sur le serveur de publication Oracle, la précision est définie comme étant égale à l'échelle lorsque le type de données est mappé : NUMBER(4,5) sera mappé comme NUMERIC(5,5).

Remarque

Si vous ne spécifiez pas d’échelle et de précision pour NU Mo ER, SQL Server utilise par défaut l’échelle maximale (8) et la précision (38). Nous vous recommandons de définir une échelle et une précision spécifiques dans Oracle, afin d'optimiser le stockage et les performances lorsque les données sont répliquées.

Types d'objets volumineux

Oracle prend en charge jusqu'à 4 gigaoctets (Go), alors que SQL Server prend en charge jusqu'à 2 Go. Les données répliquées au-delà de 2 Go sont tronquées.

Si une table Oracle comporte une colonne BFILE, les données de la colonne sont stockées dans le système de fichiers. Le compte d'utilisateur d'administration de réplication doit recevoir le droit d'accès au répertoire où les données sont stockées, via la syntaxe suivante :

GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>

Pour plus d’informations sur les types d’objets volumineux, consultez la section « Observations sur les objets volumineux » dans la rubrique Problèmes et limitations de conception des serveurs de publication Oracle.

Spécification de mappages de type de données de remplacement

En général, le mappage de type de données par défaut est approprié, mais pour un certain nombre de types de données Oracle, vous pouvez sélectionner un mappage de type de données à partir d'un ensemble de mappages de remplacement au lieu d'utiliser les mappages par défaut. Il existe deux façons de spécifier des mappages de remplacement :

  • Remplacer la valeur par défaut par article à l'aide de procédures stockées ou de l'Assistant Nouvelle publication.

  • Remplacer en totalité toutes les valeurs par défaut pour les prochains articles à l'aide de procédures stockées (les valeurs par défaut restent inchangées pour les articles existants).

Pour spécifier des mappages de types de données de remplacement, consultez Spécifier des mappages de types de données pour un Serveur de publication Oracle.

Voir aussi

Configurer un serveur de publication Oracle
Problèmes et limitations de conception des serveurs de publication Oracle
Vue d’ensemble de la publication Oracle