Abonnés Oracle

Depuis SQL Server 2005, SQL Server prend en charge les abonnements par émission de données à Oracle par le biais du fournisseur OLE DB Oracle fourni par Oracle.

Configuration d'un Abonné Oracle

Pour configurer un Abonné Oracle, procédez ainsi :

  1. Installez et configurez le logiciel réseau client Oracle et le fournisseur OLE DB Oracle sur le serveur de distribution SQL Server, afin que le serveur de distribution puisse se connecter à l'Abonné Oracle. Le logiciel réseau client Oracle doit être la version la plus récente. Oracle recommande aux utilisateurs d'installer les versions les plus récentes des logiciels clients. Par conséquent, il est fréquent que le logiciel client soit plus récent que le logiciel de base de données. La façon la plus simple d'installer le logiciel consiste à utiliser le programme d'installation Oracle Universal Installer sur le disque Oracle Client. Dans Oracle Universal Installer, vous devez fournir les informations suivantes :

    Information

    Description

    Oracle Home

    Chemin d'accès du répertoire d'installation des logiciels Oracle. Acceptez le chemin par défaut (C:\oracle\ora90 ou équivalent) ou entrez un autre chemin. Pour plus d'informations sur Oracle Home, consultez la section « Considérations sur Oracle Home » plus loin dans cette rubrique.

    Nom d'Oracle Home

    Alias pour le chemin du répertoire d'origine Oracle Home.

    Type d'installation

    Dans Oracle 10g, sélectionnez l'option d'installation Runtime ou Administrator.

  2. Créez un nom TNS pour l'Abonné. TNS (Transparent Network Substrate) est une couche communication utilisée par les bases de données Oracle. Le nom du service TNS est le nom sous lequel une instance de base de données Oracle est connue sur un réseau. Vous assignez un nom au service TNS lorsque vous configurez la connectivité à la base de données Oracle. La réplication utilise le nom du service TNS pour identifier l'Abonné et établir les connexions.

    Lorsque Oracle Universal Installer a terminé, utilisez Net Configuration Assistant pour configurer la connectivité réseau. Vous devez fournir quatre informations pour configurer la connectivité réseau. L'administrateur de base de données Oracle configure le réseau lorsqu'il installe la base de données et l'écouteur, et doit être en mesure de vous donner ces informations si vous ne les connaissez pas. Vous devez effectuer les opérations suivantes :

    Action

    Description

    Identifier la base de données

    Il existe deux méthodes pour identifier la base de données. La première méthode utilise le SID (Oracle System Identifier) et est disponible dans chaque version d'Oracle. La seconde méthode utilise le nom de service, disponible à partir d'Oracle release 8.0 et versions ultérieures. Ces deux méthodes utilisent une valeur qui est configurée lors de la création de la base de données, et il est essentiel que la configuration réseau du client utilise la méthode de nommage déjà utilisée par l'administrateur lorsqu'il a configuré l'écouteur pour la base de données.

    Identifier un alias réseau pour la base de données

    Vous devez spécifier un alias réseau, utilisé pour accéder à la base de données Oracle. L'alias réseau est essentiellement un pointeur vers le SID distant ou le nom de service qui a été configuré lors de la création de la base de données ; il a reçu divers noms dans les différentes versions et produits d'Oracle, notamment Net Service Name et TNS Alias. SQL*Plus vous demande cet alias comme paramètre « Host String » lors de votre connexion.

    Sélectionner le protocole réseau

    Sélectionnez les protocoles que vous souhaitez prendre en charge. La plupart des applications utilisent TCP.

    Spécifier les informations d'hôte pour identifier l'écouteur de la base de données

    L'hôte est le nom ou l'alias DNS de l'ordinateur sur lequel s'exécute l'écouteur d'Oracle ; cet ordinateur est en général celui sur lequel réside la base de données. Pour certains protocoles, vous devez fournir des informations supplémentaires. Par exemple, si vous sélectionnez TCP, vous devez fournir le port sur lequel l'écouteur est à l'écoute des demandes de connexion sur la base de données cible. La configuration TCP par défaut utilise le port 1521.

  3. Créer une publication transactionnelle ou d'instantané, l'activer pour les Abonnés non-SQL Server, puis créer un abonnement par envoi de données pour l'Abonné. Pour plus d'informations, consultez :

Définition des autorisations sur les répertoires

Les comptes sous lesquels s'exécute le service SQL Server sur le serveur de distribution doivent détenir les autorisations de lecture et d'exécution pour le répertoire (et tous ses sous-répertoires) sur lequel le logiciel réseau client est installé.

Tester la connectivité entre le serveur de distribution SQL Server et le serveur de publication Oracle

Dans les dernières étapes de Net Configuration Assistant il peut y avoir une option pour tester la connexion au serveur d'abonnement Oracle. Avant de tester la connexion, assurez-vous que l'instance de base de données Oracle est en ligne et que l'écouteur Oracle est en cours d'exécution. Si le test échoue, contactez l'administrateur Oracle responsable de la base de données à laquelle vous essayez de vous connecter.

Lorsque vous avez réussi à vous connecter au serveur d'abonnement Oracle, essayez de vous connecter à la base de données à l'aide du même compte et du même mot de passe que vous avez configurés pour l'Agent de distribution de cet abonnement :

  1. Cliquez sur Démarrer, puis sur Exécuter.

  2. Tapez cmd puis cliquez sur OK.

  3. À l'invite de commandes, tapez :

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

    Exemple : sqlplus replication/$tr0ngPasswerd@Oracle90Server

  4. Si la configuration du réseau a réussi, la connexion réussira et vous verrez une invite SQL.

Considérations sur Oracle Home

Oracle prend en charge l'installation côte à côte des binaires d'application, mais la réplication ne peut utiliser qu'un seul jeu de binaires à un moment donné. Chaque jeu de binaires est associé à un répertoire d'origine Oracle Home ; les binaires se trouvent dans le répertoire %ORACLE_HOME%\bin. Vous devez vous assurer que le bon jeu de binaires (c'est-à-dire la dernière version du logiciel réseau client) est utilisé lorsque la réplication ouvre les connexions sur le serveur d'abonnement Oracle.

Ouvrez une session sur le serveur de distribution avec les comptes utilisés par le service SQL Server et le service de l'Agent SQL Server, et définissez les variables d'environnement appropriées. La variable %ORACLE_HOME% doit être définie de façon à faire référence au point d'installation que vous avez spécifié lors de l'installation du logiciel réseau client. Le %PATH% doit inclure le répertoire %ORACLE_HOME% \bin comme la première entrée Oracle rencontrée. Pour plus d'informations sur la définition des variables d'environnement, consultez la documentation Windows.

Notes

Si vous avez plus d'un répertoire racine Oracle sur le serveur de distribution SQL Server, assurez-vous que l'Agent de distribution utilise le fournisseur Oracle OLE DB le plus récent. Dans certains cas, par défaut, Oracle ne met pas à jour le fournisseur OLE DB lorsque vous mettez à jour les composants clients sur le serveur de distribution SQL Server. Désinstallez l'ancien fournisseur OLE DB et installez la dernière version. Pour plus d'informations sur l’installation et la désinstallation du fournisseur, consultez la documentation Oracle.

Points à prendre en compte pour les Abonnés Oracle

Outre les considérations exposées dans la rubrique Abonnés non-SQL Server, réfléchissez aux points suivants lorsque vous répliquez vers les Abonnés Oracle :

  • Oracle considère les chaînes vides aussi bien que les valeurs NULL comme NULL. Ceci est important si vous définissez une colonne SQL Server comme NOT NULL, et si vous répliquez cette colonne vers un serveur Abonné Oracle. Pour éviter les échecs lorsque vous appliquez des modifications sur l'Abonné Oracle, vous devez :

    • vous assurer qu'aucune chaîne vide n'est insérée dans la table publiée en tant que valeurs de colonne ;

    • utiliser le paramètre –SkipErrors pour l'Agent de distribution s'il vous est possible de recevoir les notifications d'échec dans le journal d'historique de l'Agent de distribution sans interrompre le traitement ; spécifiez le code erreur Oracle 1400 (-SkipErrors1400). Pour plus d'informations sur ce paramètre, consultez Omission des erreurs lors de la réplication transactionnelle.

    • modifier le script de création de table généré, en supprimant l'attribut NOT NULL de toutes les colonnes de caractères ayant des chaînes vides associées, et fournir le script modifié en tant que script de création personnalisé pour l'article en utilisant le paramètre @creation_script de sp_addarticle.

  • Les Abonnés Oracle prennent en charge une option de schéma de 0x4071. Pour plus d'informations sur les options de schéma, consultez sp_addarticle (Transact-SQL).

Mappage des types de données à partir de SQL Server sur Oracle

La table qui suit montre les mappages de types de données qui sont utilisés lorsque les données sont répliquées sur un Abonné exécutant Oracle.

Type de données SQL Server

Type de données 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) pour Oracle 9 et Oracle 10 ; VARCHAR(27) pour Oracle 8

datetimeoffset(0-7)

TIMESTAMP(7) WITH TIME ZONE pour Oracle 9 et Oracle 10 ; VARCHAR(34) pour 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/A

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