Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique répertorie un certain nombre de problèmes qui peuvent survenir lors de la configuration et de l’utilisation d’un serveur de publication Oracle.
Une erreur est générée concernant le logiciel client et réseau Oracle
Le compte sous lequel Microsoft SQL Server s’exécute sur le serveur de distribution doit recevoir des autorisations de lecture et d’exécution pour le répertoire (et tous les sous-répertoires) dans lequel le logiciel de mise en réseau du client Oracle est installé. Si les autorisations ne sont pas accordées ou si les composants clients Oracle ne sont pas installés correctement, vous recevrez le message d’erreur suivant :
« Échec de la connexion au serveur avec [Fournisseur Microsoft OLE DB pour Oracle]. Les composants client et réseau Oracle n’ont pas été trouvés. Ces composants sont fournis par Oracle Corporation et font partie de l’installation du logiciel client Oracle Version 7.3.3 ou ultérieure. Le fournisseur ne peut pas fonctionner tant que ces composants ne sont pas installés. »
Si un client Oracle approprié a été installé sur le serveur de distribution, vérifiez que SQL Server a été arrêté, puis redémarré une fois l’installation du client terminée. Cela est nécessaire pour que SQL Server reconnaisse les composants clients.
Si vous avez vérifié que les autorisations sont accordées et que les composants sont installés correctement, mais cette erreur persiste, vérifiez que les paramètres du Registre à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI sont corrects :
Pour Oracle 10g, les paramètres appropriés sont
OracleOciLib = oci.dll
OracleSqlLib = orasql10.dll
OracleXaLib = oraclient10.dll
Pour Oracle 9i, les paramètres corrects sont
OracleOciLib = oci.dll
OracleSqlLib = orasql9.dll
OracleXaLib = oraclient9.dll
Le serveur de distribution SQL Server ne peut pas se connecter à l’instance Oracle Database
Si le serveur de distribution SQL Server ne peut pas se connecter au serveur de publication Oracle, vérifiez que :
Le logiciel Oracle nécessaire est installé sur le serveur de distribution.
La base de données Oracle est en ligne et vous pouvez vous y connecter à l’aide d’un outil tel que SQL*Plus.
La réplication de connexion utilisée pour se connecter au serveur de publication Oracle dispose d’autorisations suffisantes. Pour plus d’informations, consultez Configurer un serveur de publication Oracle.
Les noms TNS définis lors de la configuration du serveur de publication Oracle sont répertoriés dans le fichier tnsnames.ora.
La page d’accueil et le chemin d’accès Oracle appropriés sont utilisés. Même si vous n’avez qu’un seul ensemble de fichiers binaires Oracle installés sur le serveur de distribution SQL Server, assurez-vous que les variables d’environnement associées à oracle Home sont correctement définies. Si vous modifiez les valeurs des variables d’environnement, vous devez arrêter et redémarrer SQL Server pour que la modification prenne effet.
Pour plus d’informations sur la configuration et le test de la connectivité, consultez « Installation et configuration du logiciel de mise en réseau du client Oracle sur le serveur de distribution SQL Server » dans Configurer un serveur de publication Oracle.
Le serveur de publication Oracle est associé à un autre serveur de distribution
Un serveur de publication Oracle ne peut être associé qu’à un serveur de distribution SQL Server. Si un autre serveur de distribution est associé au serveur de publication Oracle, il doit être supprimé avant qu’un autre serveur de distribution puisse être utilisé. Si le serveur de distribution n’est pas supprimé en premier, vous recevrez l’un des messages d’erreur suivants :
« L’instance de serveur Oracle «<OraclePublisherName> » a été précédemment configurée pour utiliser «<SQLServerDistributorName> » comme serveur de distribution. Pour commencer à utiliser «<NewSQLServerDistributorName> » comme serveur de distribution, vous devez supprimer la configuration de réplication actuelle sur l’instance de serveur Oracle, ce qui supprimera toutes les publications sur cette instance de serveur. »
« Oracle Server '<OracleServerName>' est déjà défini en tant que serveur de publication '<OraclePublisherName>' sur le serveur de distribution '<SQLServerDistributorName>'.<DistributionDatabaseName>'. Supprimez l’éditeur ou supprimez le synonyme public « <SynonymName> » pour le recréer. »
Lorsqu’un serveur de publication Oracle est supprimé, les objets de réplication dans la base de données Oracle sont automatiquement nettoyés. Toutefois, le nettoyage manuel des objets de réplication Oracle est nécessaire dans certains cas. Pour nettoyer manuellement les objets de réplication Oracle créés par la réplication :
Connectez-vous au serveur de publication Oracle avec des autorisations DBA.
Émettez la commande SQL
DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;.Exécutez la commande SQL
DROP USER <replication_administrative_user_schema>``CASCADE;.
L’erreur SQL Server 21663 est déclenchée en ce qui concerne l’absence de clé primaire
Les articles des publications transactionnelles doivent avoir une clé primaire valide. S’ils n’ont pas de clé primaire valide, vous recevrez le message d’erreur suivant lorsque vous tentez d’ajouter un article :
« Aucune clé primaire valide trouvée pour la table source [<TableOwner>].[<TableName>]"
Pour plus d’informations sur la configuration requise pour les clés primaires, consultez la section « Index et contraintes uniques » dans la rubrique Considérations et limitations relatives à la conception pour les serveurs de publication Oracle.
L’erreur SQL Server 21642 est déclenchée concernant un double utilisateur pour un serveur lié.
Lorsqu’un serveur de publication Oracle est initialement configuré, une entrée de serveur lié est créée pour la connexion entre le serveur de publication et le serveur de distribution. Le serveur lié a le même nom que le nom du service Oracle TNS. Si vous tentez de créer un serveur lié portant le même nom, le message d’erreur suivant s’affiche :
« Les éditeurs hétérogènes nécessitent un serveur lié. Un serveur lié nommé « <LinkedServerName> » existe déjà. Supprimez le serveur lié ou choisissez un autre nom d’éditeur. »
Cette erreur peut se produire si vous tentez de créer le serveur lié directement ou si vous avez précédemment supprimé la relation entre le serveur de publication Oracle et le serveur de distribution SQL Server, et que vous tentez maintenant de la reconfigurer. Si vous recevez cette erreur lors de la tentative de reconfiguration du serveur de publication, supprimez le serveur lié avec sp_dropserver (Transact-SQL).
Si vous devez vous connecter au serveur de publication Oracle via une connexion de serveur lié, créez un autre nom de service TNS, puis utilisez ce nom en appelant sp_addlinkedserver (Transact-SQL). Pour plus d’informations sur la création de noms de service TNS, consultez la documentation Oracle.
L’erreur SQL Server 21617 est déclenchée
La publication Oracle utilise l'application Oracle SQL*PLUS pour télécharger le package du code d'assistance de Publisher dans la base de données Oracle. Avant de tenter de configurer le serveur de publication Oracle, SQL Server vérifie que SQL*PLUS est accessible via le chemin système du serveur de distribution. Si SQL*PLUS ne peut pas être chargé, le message d’erreur suivant s’affiche :
« Impossible d’exécuter SQL*PLUS. Assurez-vous qu’une version actuelle du code client Oracle est installée sur le serveur de distribution. »
Essayez de localiser SQL*PLUS sur le serveur de distribution. Pour une installation du client Oracle 10g, le nom de cet exécutable est sqlplus.exe. Il est généralement installé dans %ORACLE_HOME%/bin. Pour vérifier que le chemin d’accès de SQL*PLUS apparaît dans le chemin d’accès système, examinez la valeur du chemin d’accès de la variable système :
Cliquez avec le bouton droit sur Mon ordinateur, puis cliquez sur Propriétés.
Cliquez sur l’onglet Avancé , puis sur Variables d’environnement.
Dans la boîte de dialogue Variables d’environnement , dans la liste des variables système , sélectionnez la variable Path , puis cliquez sur Modifier.
Dans la boîte de dialogue Modifier la variable système : si le chemin d’accès au dossier contenant sqlplus.exe n’est pas présent dans la zone de texte Valeur de la variable , modifiez la chaîne pour l’inclure.
Cliquez sur OK dans chaque boîte de dialogue ouverte pour quitter et enregistrer les modifications.
Si vous ne pouvez pas localiser sqlplus.exe sur le serveur de distribution, installez une version actuelle du logiciel client Oracle sur le serveur de distribution. Pour plus d’informations, consultez Configurer un serveur de publication Oracle.
L’erreur SQL Server 21620 est déclenchée
Si vous vous connectez à une base de données Oracle antérieure à la version 8.1, la publication Oracle nécessite que le logiciel client Oracle installé sur le serveur de distribution soit à partir de la version 9. Si vous vous connectez à une base de données Oracle version 8.1 ou ultérieure, nous vous recommandons d’utiliser le logiciel client Oracle version 10 ou ultérieure.
Avant de tenter de configurer le serveur de publication Oracle, la publication Oracle vérifie que la version de SQL*PLUS accessible via le chemin d’accès système sur le serveur de distribution est la version 9 ou ultérieure. Si ce n’est pas le cas, le message d’erreur suivant s’affiche :
La version de SQL*PLUS accessible par le biais de la variable de chemin d'accès système n'est pas suffisamment à jour pour prendre en charge la publication Oracle. Assurez-vous qu’une version actuelle du code client Oracle est installée sur le serveur de distribution. »
Si vous avez plusieurs versions du logiciel client Oracle installé sur le serveur de distribution, vérifiez que la version la plus récente est au moins la version 9 et que la variable de chemin d’accès système fait d’abord référence à cette version (les références à d’autres versions peuvent apparaître tant que la version la plus récente apparaît en premier). Pour plus d’informations sur la modification de la variable de chemin d’accès système, consultez la section « Erreur SQL Server 21617 est déclenchée » plus haut dans cette rubrique.
Erreur 21624 ou 21629 levée par SQL Server
Pour les éditeurs 64 bits, Oracle utilise le fournisseur Oracle OLEDB pour Oracle (OraOLEDB.Oracle). Vérifiez que le fournisseur Oracle OLEDB est installé et inscrit sur le serveur de distribution. Si le fournisseur n’est pas installé et inscrit, un ou les deux messages d’erreur suivants s’affiche :
« Impossible de localiser le fournisseur ORACLE OLEDB inscrit, OraOLEDB.Oracle, sur le serveur de distribution%s' . Assurez-vous qu’une version actuelle du fournisseur Oracle OLEDB est installée et inscrite sur le serveur de distribution. »
« La clé de Registre CLSID indiquant que le fournisseur Oracle OLEDB pour Oracle, OraOLEDB.Oracle, a été enregistré n’est pas présent chez le distributeur. » Assurez-vous que le fournisseur Oracle OLEDB est installé et inscrit sur le serveur de distribution. »
Si vous utilisez le logiciel client Oracle version 10g, le fournisseur est OraOLEDB10.dll; pour la version 9i, il est OraOLEDB.dll. Le fournisseur est installé dans %ORACLE_HOME%\BIN (par exemple, C :\oracle\product\10.1.0\Client_1\bin). Si vous déterminez que le fournisseur Oracle OLEDB n’est pas installé sur le serveur de distribution, installez-le à partir du disque d’installation du logiciel client Oracle fourni par Oracle. Pour plus d’informations, consultez Configurer un serveur de publication Oracle.
Si le fournisseur Oracle OLEDB est installé, vérifiez qu’il est inscrit. Pour inscrire la DLL du fournisseur, exécutez la commande suivante à partir du répertoire dans lequel la DLL est installée, puis arrêtez et redémarrez l’instance SQL Server :
-
regsvr32 OraOLEDB10.dllouregsvr32 OraOLEDB.dll.
Erreur SQL Server 21626 ou Erreur 21627 a été signalée
Pour vérifier que l’environnement de publication Oracle est configuré correctement, SQL Server tente de se connecter au serveur de publication Oracle avec les informations d’identification de connexion que vous avez spécifiées lors de la configuration. Si le serveur de distribution SQL Server ne peut pas se connecter au serveur de publication Oracle, le message d’erreur suivant s’affiche :
- « Impossible de se connecter au serveur de base de données Oracle '%s' à l’aide du fournisseur Oracle OLEDB OraOLEDB.Oracle. »
Si ce message d’erreur s’affiche, vérifiez la connectivité à la base de données Oracle en exécutant SQL*PLUS directement à l’aide du même mot de passe et de connexion spécifiés lors de la configuration du serveur de publication Oracle. Pour plus d’informations, consultez la section « Le serveur de distribution SQL Server ne peut pas se connecter à l’instance de base de données Oracle » plus haut dans cette rubrique.
L’erreur SQL Server 21628 est déclenchée
Pour les distributeurs de logiciels 64 bits, la publication d'Oracle utilise le fournisseur Oracle OLEDB pour Oracle (OraOLEDB.Oracle). SQL Server crée une entrée de registre pour permettre au fournisseur Oracle de s’exécuter dans le processus avec SQL Server. En cas de problème de lecture ou d’écriture de cette entrée de Registre, le message d’erreur suivant s’affiche :
« Impossible de mettre à jour le registre du distributeur '%s' pour permettre au fournisseur Oracle OLEDB OraOLEDB.Oracle de s'exécuter dans le processus avec SQL Server. » Assurez-vous que la connexion actuelle est autorisée à modifier les clés de Registre appartenant à SQL Server. »
La publication Oracle nécessite que l’entrée de Registre existe et qu’elle soit définie sur 1 pour les distributeurs 64 bits. Si l’entrée n’existe pas, SQL Server tente de le créer. Si l’entrée existe, mais est définie sur 0, le paramètre ne sera pas modifié ; la configuration du serveur de publication Oracle échoue.
Pour afficher et modifier le paramètre de Registre :
Cliquez sur Démarrer, puis cliquez sur Exécuter.
Dans la boîte de dialogue Exécuter , tapez regedit, puis cliquez sur OK.
Accédez à HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.
Inclus sous Fournisseurs doit être un dossier nommé OraOLEDB.Oracle. Ce dossier doit contenir le nom de valeur DWORD AllowInProcess, avec la valeur 1.
Si vous déterminez que AllowInProcess est défini sur 0, mettez à jour l’entrée de Registre sur 1 :
Cliquez avec le bouton droit sur l’entrée, puis cliquez sur Modifier.
Dans la boîte de dialogue Modifier la chaîne, tapez 1 dans le champ Données de valeur.
L’erreur SQL Server 21684 est déclenchée
Si le compte d’utilisateur administratif n’a pas suffisamment de privilèges, le message d’erreur suivant s’affiche :
« Les autorisations associées à la connexion administrateur pour l’éditeur Oracle%s' ne sont pas suffisantes. »
Pour vérifier les autorisations accordées à l’utilisateur, exécutez la requête suivante : SELECT * from session_privs. La sortie doit ressembler à ce qui suit :
PRIVILEGE
------------------
CREATE SESSION
CREATE TABLE
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
Vous rencontrez des problèmes d’autorisations pour le schéma utilisateur de réplication
Le schéma utilisateur de réplication doit disposer des autorisations décrites dans « Création manuelle du schéma utilisateur » dans Configurer un serveur de publication Oracle.
Erreur Oracle ORA-01000
La réplication utilise des curseurs sur le serveur de publication Oracle pendant le processus d’ajout d’articles à une publication. Il est possible de dépasser le nombre maximal de curseurs disponibles sur le serveur de publication pendant ce processus. Si cela se produit, l’erreur suivante est générée :
« ORA-01000 : nombre maximal de curseurs ouverts dépassés »
Pour éviter ce problème, vérifiez que le paramètre max_open_cursors dans les bases de données Oracle est défini sur un nombre suffisamment élevé (au moins 1 000). Pour plus d’informations sur ce paramètre, consultez la documentation Oracle.
Erreur Oracle ORA-01555
L’erreur de base de données Oracle suivante n’est pas liée à la réplication d’instantanés ; il est lié à la façon dont Oracle construit des vues cohérentes en lecture des données :
« ORA-01555 : Capture instantanée trop ancienne »
À l’aide d’objets appelés segments de restauration, Oracle construit des vues en lecture cohérente des données à partir du moment où une instruction SQL est émise. Une erreur « capture instantanée trop ancienne » peut se produire lorsque les informations de restauration sont remplacées par d’autres sessions simultanées. Avant Oracle 9i, la méthode recommandée de réduction de la fréquence de cette erreur était d’augmenter la taille et/ou le nombre de segments de restauration, et d’affecter de grandes transactions à un segment de restauration spécifique.
Dans Oracle 9i, Oracle a introduit le concept de tablespace UNDO, qui remplace le segment d'annulation. Pour empêcher l’erreur « capture instantanée trop ancienne » dans Oracle 9i, il est recommandé de :
Créez un espace de table UNDO avec une quantité appropriée d’espace libre.
Définissez la garantie de rétention sur l’espace de table (Oracle 10G et versions ultérieures).
Configurez les paramètres d’initialisation Oracle UNDO_MANAGEMENT et UNDO_RETENTION.
Pour plus d’informations sur l’évitement de l’erreur « capture instantanée trop ancienne », consultez la documentation Oracle.
Erreur Oracle ORA-22285
Si une table inclut une colonne BFILE, les données de la colonne sont stockées dans le système de fichiers. Le compte d’utilisateur administratif de réplication doit être autorisé à accéder au répertoire dans lequel les données sont stockées à l’aide de la syntaxe suivante :
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Si l’accès n’est pas accordé, l’Agent de lecture du journal génère l'erreur suivante :
« ORA-22285 : répertoire ou fichier inexistant pour l’opération FILEOPEN »
Des modifications sont apportées qui nécessitent une reconfiguration de l'éditeur
Les modifications apportées aux tables ou procédures de métadonnées de réplication nécessitent de supprimer et de reconfigurer le Publisher. Pour reconfigurer le serveur de publication, vous devez supprimer le serveur de publication et le configurer à nouveau à l’aide de SQL Server Management Studio, Transact-SQL ou RMO. Pour plus d’informations sur la configuration du serveur de publication, consultez Configurer un serveur de publication Oracle.
Pour supprimer un serveur de publication Oracle (SQL Server Management Studio)
Connectez-vous au serveur de distribution pour le serveur de publication Oracle dans SQL Server Management Studio et développez le nœud du serveur.
Cliquez avec le bouton droit sur Réplication, puis cliquez sur Propriétés du serveur de distribution.
Dans la page Serveurs de publication de la boîte de dialogue Propriétés du serveur de distribution , désactivez la case à cocher du serveur de publication Oracle.
Cliquez sur OK.
Pour supprimer un serveur de publication Oracle (Transact-SQL)
- Exécutez sp_dropdistpublisher. Pour plus d’informations, consultez sp_dropdistpublisher (Transact-SQL).
Voir aussi
Configurer un serveur de publication Oracle
Vue d’ensemble de la publication Oracle