Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Dit artikel vermeldt een aantal problemen die kunnen ontstaan wanneer je een Oracle Publisher configureert en gebruikt.
Er wordt een foutmelding gemeld met betrekking tot Oracle client en netwerksoftware
Je moet het account waarmee Microsoft SQL Server draait op de Distributor lees- en uitvoerrechten verlenen voor de map en alle submappen waarin de Oracle-clientnetwerksoftware is geïnstalleerd. Als je de rechten niet verleent of als de Oracle-clientcomponenten niet correct zijn geïnstalleerd, krijg je de volgende foutmelding:
"Verbinding met server mislukt met [Microsoft OLE DB Provider voor Oracle]. Oracle-client- en netwerkcomponenten zijn niet gevonden. Deze onderdelen worden geleverd door Oracle Corporation en maken deel uit van de clientsoftware-installatie van Oracle-versie 7.3.3 of hoger. De provider kan niet functioneren totdat deze componenten zijn geïnstalleerd."
Als je een geschikte Oracle-client installeert bij de distributeur, zorg dan dat je stopt en vervolgens SQL Server opnieuw start nadat de clientinstallatie is afgerond. Deze stap is vereist om SQL Server de clientcomponenten te herkennen.
Als je de rechten verleent en de componenten correct installeert maar de fout blijft bestaan, controleer dan of de registerinstellingen bij HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI correct zijn:
Voor Oracle 10g zijn de juiste instellingen:
OracleOciLib = oci.dll
OracleSqlLib = orasql10.dll
OracleXaLib = oraclient10.dll
Voor Oracle 9i zijn de juiste instellingen:
OracleOciLib = oci.dll
OracleSqlLib = orasql9.dll
OracleXaLib = oraclient9.dll
De SQL Server Distributor kan geen verbinding maken met de Oracle-databaseinstantie
Als de SQL Server Distributor geen verbinding kan maken met Oracle Publisher, zorg er dan voor dat:
De benodigde Oracle-software wordt op de distributeur geïnstalleerd.
De Oracle-database is online en je kunt ermee verbinden via een tool als SQL*Plus.
De inlogreplicatie die wordt gebruikt om verbinding te maken met de Oracle Publisher heeft voldoende rechten. Zie Een Oracle Publisher configureren voor meer informatie.
Het tnsnames.ora-bestand vermeldt de TNS-namen die je hebt gedefinieerd tijdens de configuratie van de Oracle Publisher.
Je gebruikt het juiste Oracle Home en pad. Zelfs als je slechts één set Oracle-binaries hebt geïnstalleerd op de SQL Server Distributor, zorg er dan voor dat de omgevingsvariabelen die met Oracle Home te maken hebben correct zijn ingesteld. Als je de waarden van omgevingsvariabelen verandert, moet je SQL Server stoppen en opnieuw opstarten voordat de wijziging van kracht wordt.
Voor meer informatie over het configureren en testen van connectiviteit, zie "Installing and Configure Oracle Client Networking Software on the SQL Server Distributor" in Configure an Oracle Publisher.
De Oracle Publisher is verbonden aan een andere distributeur
Een Oracle Publisher kan slechts aan één SQL Server Distributor worden gekoppeld. Als een andere distributeur aan de Oracle Publisher is gekoppeld, stop deze dan voordat je een andere distributeur gebruikt. Als je de Distributor niet eerst verwijdert, krijg je een van de volgende foutmeldingen:
"OraclePublisherName, de Oracle serverinstantie><, is eerder geconfigureerd om '<SQLServerDistributorName>' als distributeur te gebruiken. Om '<NewSQLServerDistributorName>' als distributeur te gebruiken, moet je de huidige replicatieconfiguratie op de Oracle serverinstantie verwijderen, waardoor alle publicaties op die serverinstantie worden verwijderd."
Oracle-server '><' is al gedefinieerd als uitgever '<OraclePublisherName>' bij distributeur '<SQLServerDistributorName>.<DistributionDatabaseName>'. Laat de uitgever vallen of laat het publieke synoniem '<SynonymName'> vallen om het opnieuw te creëren."
Wanneer je een Oracle Publisher uitschakelt, worden de replicatieobjecten in de Oracle-database automatisch opgeschoond. In sommige gevallen moet je echter handmatig de Oracle-replicatieobjecten opschonen. Om Oracle replicatieobjecten die door replicatie zijn gemaakt handmatig op te schonen:
Maak verbinding met de Oracle-uitgever met DBA-rechten.
Voer het SQL-commando
DROP PUBLIC SYNONYM MSSQLSERVERDISTRIBUTOR;uit.Voer het SQL-commando
DROP USER <replication_administrative_user_schema>``CASCADE;uit.
SQL Server-fout 21663 wordt gemeld over het ontbreken van een primaire sleutel
Artikelen in transactionele publicaties moeten een geldige primaire sleutel hebben. Als ze geen geldige primaire sleutel hebben, krijg je de volgende foutmelding wanneer je probeert een artikel toe te voegen:
"Geen geldige primaire sleutel gevonden voor brontabel [<TableOwner>].[<TableName>]"
Voor informatie over vereisten voor primaire sleutels, zie de sectie "Unieke Indexen en Beperkingen" in het artikel Ontwerpoverwegingen en Beperkingen voor Oracle-uitgevers.
SQL Server-fout 21642 wordt gemeld met betrekking tot een dubbele gekoppelde server-login
Wanneer je aanvankelijk een Oracle Publisher configureert, maakt het proces een gekoppelde serververmelding aan voor de verbinding tussen de Publisher en de Distributor. De gekoppelde server heeft dezelfde naam als de Oracle TNS-servicenaam. Als je probeert een gekoppelde server met dezelfde naam te maken, zie je de volgende foutmelding:
"Heterogene uitgevers hebben een gekoppelde server nodig. Er bestaat al een gekoppelde server genaamd '<LinkedServerName>'. Verwijder alstublieft de gekoppelde server of kies een andere uitgeversnaam."
Deze fout kan optreden als je probeert de gekoppelde server direct aan te maken of als je eerder de relatie tussen Oracle Publisher en de SQL Server Distributor hebt verbroken, en je nu probeert deze opnieuw te configureren. Als je deze foutmelding krijgt terwijl je probeert de Publisher te herconfigureren, verwijder dan de gekoppelde server met sp_dropserver (Transact-SQL).
Als u verbinding wilt maken met de Oracle-Publisher via een gekoppelde serververbinding, maakt u een andere TNS-servicenaam en gebruikt u deze naam bij het aanroepen van sp_addlinkedserver (Transact-SQL). Voor informatie over het aanmaken van TNS-servicenamen, zie de Oracle-documentatie.
SQL Server-fout 21617 treedt op
Oracle-publicatie gebruikt de Oracle-applicatie SQL*PLUS om het pakket met Publisher-ondersteuningscode naar de Oracle-database te downloaden. Voordat men probeert de Oracle Publisher te configureren, verifieert SQL Server dat SQL*PLUS toegankelijk is via het systeempad op de Distributor. Als SQL*PLUS niet kan worden geladen, wordt het volgende foutbericht weergegeven:
"Kan SQL*PLUS niet uitvoeren. Zorg ervoor dat een actuele versie van de Oracle-clientcode is geïnstalleerd bij de distributeur."
Probeer SQLPLUS te vinden op de Distributor. Voor een Oracle 10g-clientinstallatie heet dit uitvoerbare bestand sqlplus.exe. Het wordt meestal geïnstalleerd in %ORACLE_HOME%/bin. Om te verifiëren dat het pad van SQLPLUS in het systeempad voorkomt, controleer je de waarde van de systeemvariabele Pad:
Klik met de rechtermuisknop op Deze computer en klik op Eigenschappen.
Klik op het tabblad Geavanceerd en klik vervolgens op Omgevingsvariabelen.
Selecteer in het dialoogvenster Omgevingsvariabelen in de lijst Systeemvariabelen de Padvariabele en klik vervolgens op Bewerken.
In het dialoogvenster Systeemvariabele bewerken : als het pad naar de map die sqlplus.exe bevat niet aanwezig is in het tekstvak Variabelewaarde, bewerk dan de string om deze op te nemen.
Klik op OK in elk geopend dialoogvenster om af te sluiten en wijzigingen op te slaan.
Als je sqlplus.exe niet kunt vinden op de Distributor, installeer dan een actuele versie van de Oracle clientsoftware bij de Distributor. Zie Een Oracle Publisher configureren voor meer informatie.
SQL Server-fout 21620 treedt op
Als je verbinding maakt met een Oracle-database vóór versie 8.1, vereist Oracle-publicatie dat de Oracle-clientsoftware die op de Distributor is geïnstalleerd uit versie 9 komt. Als je verbinding maakt met een Oracle-database die versie 8.1 of later is, gebruik dan Oracle client software versie 10 of later.
Voordat men probeert de Oracle Publisher te configureren, verifieert Oracle Publishing dat de versie van SQL*PLUS die via het systeempad op de Distributor toegankelijk is, versie 9 of later is. Als dat niet zo is, wordt de volgende foutmelding weergegeven:
"De versie van SQL*PLUS die toegankelijk is via de systeemvariabele Path is niet actueel genoeg om Oracle-publicatie te ondersteunen. Zorg ervoor dat een actuele versie van de Oracle-clientcode is geïnstalleerd bij de distributeur."
Als je meerdere versies van de Oracle-clientsoftware op de Distributor hebt geïnstalleerd, zorg er dan voor dat de meest actuele versie ten minste versie 9 is en dat de systeempadvariabele eerst naar deze versie verwijst (verwijzingen naar andere versies kunnen verschijnen zolang de meest recente als eerste verschijnt). Voor meer informatie over het bewerken van de systeempadvariabele, zie de sectie "SQL Server is Raised" eerder in dit artikel.
SQL Server-fout 21624 of fout 21629 wordt gegenereerd
Voor 64-bit distributeurs gebruikt Oracle-publicatie de Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). Zorg ervoor dat de Oracle OLEDB-provider is geïnstalleerd en geregistreerd bij de distributeur. Als de provider niet is geïnstalleerd en geregistreerd, zie je een of beide van de volgende foutmeldingen:
"Kan de geregistreerde Oracle OLEDB-provider, OraOLEDB.Oracle, niet vinden bij distributeur '%s'. Zorg ervoor dat een actuele versie van de Oracle OLEDB-provider is geïnstalleerd en geregistreerd bij de distributeur."
"De CLSID-registersleutel die aangeeft dat de Oracle OLEDB-provider voor Oracle, OraOLEDB.Oracle, is geregistreerd, is niet aanwezig bij de distributeur. Zorg ervoor dat de Oracle OLEDB-provider is geïnstalleerd en geregistreerd bij de distributeur."
Als je Oracle client software versie 10g gebruikt, is de provider OraOLEDB10.dll; voor versie 9i is het OraOLEDB.dll. De provider is geïnstalleerd in %ORACLE_HOME%\BIN (bijvoorbeeld C:\oracle\product\10.1.0\Client_1\bin). Als je vaststelt dat de Oracle OLEDB-provider niet op de distributeur is geïnstalleerd, installeer deze dan vanaf de Oracle client software installatiedisc die door Oracle wordt geleverd. Zie Een Oracle Publisher configureren voor meer informatie.
Als de Oracle OLEDB-provider is geïnstalleerd, zorg er dan voor dat deze geregistreerd is. Om de provider DLL te registreren, voer je het volgende commando uit vanuit de map waar de DLL is geïnstalleerd, en stop en start vervolgens de SQL Server-instantie opnieuw op:
-
regsvr32 OraOLEDB10.dllofregsvr32 OraOLEDB.dll.
SQL Server-fout 21626 of fout 21627 wordt geactiveerd
Om te verifiëren dat de Oracle-publicatieomgeving correct is geconfigureerd, probeert SQL Server verbinding te maken met de Oracle Publisher door gebruik te maken van de inloggegevens die je tijdens de configuratie hebt opgegeven. Als de SQL Server Distributor geen verbinding kan maken met Oracle Publisher, zie je de volgende foutmelding:
- "Kan geen verbinding maken met Oracle database server '%s' via de Oracle OLEDB-provider OraOLEDB.Oracle."
Als je deze foutmelding ziet, controleer dan de connectiviteit met de Oracle-database door SQL*PLUS direct uit te voeren met hetzelfde inlog- en wachtwoord dat je hebt opgegeven tijdens de configuratie van de Oracle Publisher. Zie voor meer informatie het gedeelte "De SQL Server-distributeur kan geen verbinding maken met het Oracle-database-exemplaar" eerder in dit artikel.
SQL Server-fout 21628 treedt op
Voor 64-bit distributeurs gebruikt Oracle-publicatie de Oracle OLEDB Provider for Oracle (OraOLEDB.Oracle). SQL Server maakt een registervermelding aan zodat de Oracle-provider in proces kan draaien met SQL Server. Als er een probleem is met het lezen of schrijven van deze registerpost, verschijnt de volgende foutmelding:
Kan het register van de distributeur '%s' niet bijwerken om toe te staan dat Oracle OLEDB-provider OraOLEDB.Oracle in-process met SQL Server wordt uitgevoerd. Zorg ervoor dat de huidige login is gemachtigd om de door SQL Server beheerde registersleutels aan te passen."
Oracle-publicatie vereist dat de registervermelding bestaat en op 1 wordt gezet voor 64-bits distributeurs. Als de invoer niet bestaat, probeert SQL Server deze aan te maken. Als de invoer bestaat maar op 0 staat, verandert de instelling niet en faalt de configuratie van de Oracle Publisher.
Om de registerinstelling te bekijken en aan te passen:
Selecteer Start en selecteer vervolgens Uitvoeren.
Typ in het dialoogvenster 'Run' regedit en selecteer dan OK.
Ga naar HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<InstanceName>\Providers.
Zoek onder Providers een map genaamd
OraOLEDB.Oracle. Binnen deze map vindt u de DWORD-waarde naam AllowInProcess met een waarde van 1.Als je merkt dat AllowInProcess op 0 staat, werk dan de registervermelding bij naar 1:
Klik met de rechtermuisknop op de invoer en selecteer dan Wijzigen.
Typ in het dialoogvenster 'Edit String ' 1 in het veld Value data .
SQL Server-fout 21684 wordt gegenereerd
Als het beheerdersaccount niet voldoende rechten heeft, zie je de volgende foutmelding:
"De rechten die gekoppeld zijn aan de beheerderslogin voor de Oracle-uitgever '%s' zijn niet voldoende."
Om de aan de gebruiker verleende rechten te verifiëren, voer je de volgende zoekopdracht uit: SELECT * from session_privs. De uitvoer moet er ongeveer als volgt uitzien:
PRIVILEGE
------------------
CREATE SESSION
CREATE TABLE
CREATE PUBLIC SYNONYM
DROP PUBLIC SYNONYM
CREATE VIEW
CREATE SEQUENCE
CREATE PROCEDURE
CREATE TRIGGER
Je ondervindt machtigingsproblemen met het schema van de replicatiegebruiker
Het replicatie-gebruikersschema moet de rechten hebben die beschreven zijn in "Het gebruikersschema handmatig aanmaken" in Configure an Oracle Publisher.
Oracle Error ORA-01000
Replicatie gebruikt cursors op de Oracle Publisher tijdens het toevoegen van artikelen aan een publicatie. Het is mogelijk om het maximale aantal cursors dat beschikbaar is op de Publisher tijdens dit proces te overschrijden. Als dit gebeurt, wordt de volgende fout gegenereerd:
ORA-01000: maximumaantal geopende cursors overschreden
Om dit probleem te voorkomen, zorg ervoor dat de max_open_cursors-instelling in de Oracle-databases op een voldoende hoog aantal is ingesteld (minstens 1000). Voor meer informatie over deze instelling, zie de Oracle-documentatie.
Oraclefout ORA-01555
De volgende Oracle-databasefout heeft geen betrekking op snapshotreplicatie; het heeft te maken met hoe Oracle leesconsistente weergaven van data construeert:
"ORA-01555: Momentopname te oud"
Met objecten die bekend staan als rollback-segmenten construeert Oracle leesconsistente weergaven van data op het moment dat een SQL-instructie wordt uitgegeven. Een foutmelding "snapshot too old" kan zich voordoen wanneer rollback-informatie wordt overschreven door andere gelijktijdig actieve sessies. Voor Oracle 9i was de aanbevolen methode om de frequentie van deze fout te verminderen het vergroten van de grootte en/of het aantal rollback-segmenten en het toewijzen van grote transacties aan een specifiek rollback-segment.
In Oracle 9i introduceerde Oracle het UNDO-tablespace-concept, dat het rollback-segment vervangt. Om de fout "snapshot te oud" in Oracle 9i te voorkomen, wordt aanbevolen dat je:
Maak een UNDO-tabelruimte aan met een passende hoeveelheid vrije ruimte.
Stel de retentiegarantie in op de tablespace (Oracle 10G en hoger).
Configureer de Oracle-initialisatieparameters UNDO_MANAGEMENT en UNDO_RETENTION.
Raadpleeg de Oracle-documentatie voor meer informatie over het voorkomen van de fout "snapshot too old".
Oraclefout ORA-22285
Als een tabel een BFILE-kolom bevat, wordt de data voor die kolom opgeslagen in het bestandssysteem. U moet de replicatie beheerdersaccounttoegang verlenen tot de map waar de gegevens zijn opgeslagen door de volgende syntaxis te gebruiken:
GRANT READ ON DIRECTORY <directory_name> TO <replication_administrative_user_schema>
Als je geen toegang verleent, geeft de Log Reader Agent de volgende foutmelding:
"ORA-22285: niet-bestaande map of bestand voor FILEOPEN-operatie"
Wijzigingen die herconfiguratie van de Publisher vereisen
Als je wijzigingen aanbrengt in replicatiemetadatatabellen of procedures, moet je de Publisher verwijderen en opnieuw configureren. Om de Publisher opnieuw te configureren, moet je de Publisher verwijderen en opnieuw configureren door gebruik te maken van SQL Server Management Studio, Transact-SQL of RMO. Voor meer informatie over het configureren van de Publisher, zie Configure an Oracle Publisher.
Om een Oracle Publisher te verwijderen (SQL Server Management Studio)
Maak verbinding met de distributeur van de Oracle Publisher in SQL Server Management Studio en breid de servernode uit.
Klik met de rechtermuisknop op Replicatie en vervolgens op Eigenschappen van distributeurs.
Op de pagina Uitgevers van het dialoogvenster Distributor Properties verwijder je het selectievakje voor Oracle Publisher.
Klik op OK.
Om een Oracle Publisher te droppen (Transact-SQL)
- Voer sp_dropdistpublisher uit. Voor meer informatie, zie sp_dropdistpublisher (Transact-SQL).