Mappage de type de données pour les serveurs de publication Oracle
Les types de données Oracle et 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 » ci-dessous.
Le tableau suivant indique 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 sur 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 | Alternatives |
---|---|---|
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 |
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 avec 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 varient de 1753 à 9999, alors que les dates dans Oracle varient de -4712 à 4712. Si une colonne de type DATE contient des valeurs hors limites pour SQL Server, sélectionnez le type de données de remplacement pour la colonne, c'est-à-dire 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 point décimal (notre virgule) 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 dont l'échelle est supérieure à la précision, par exemple NUMBER(4,5), mais SQL Server nécessite une précision supérieure ou égale à 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 n'indiquez pas d'échelle ni de précision pour NUMBER, SQL Server utilise par défaut les valeurs maximales d'échelle (8) et de 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 de réplication administrative doit disposer d'une autorisation d'accès au répertoire sur lequel sont stockées les données à l'aide de 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 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 type de données de remplacement
- SQL Server Management Studio: Procédure : spécifier des mappages de types de données pour un serveur de publication Oracle (SQL Server Management Studio)
- Programmation de la réplication : How to: Specify Data Type Mappings for an Oracle Publisher (Replication Transact-SQL Programming)
Voir aussi
Concepts
Configuration d'un serveur de publication Oracle
Problèmes et limitations de conception des serveurs de publication Oracle
Présentation de la publication Oracle