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.
Belangrijk
Change Data Capture voor Oracle door Attunity is nu verouderd verklaard. Raadpleeg de aankondigingvoor meer informatie.
Een Oracle CDC-exemplaar haalt veranderingen op uit een enkele Oracle-brondatabase (een Oracle RAC-cluster wordt beschouwd als één database) en schrijft de doorgevoerde wijzigingen naar wijzigingstabellen in een CDC-database in de doel SQL Server-exemplaar.
Een CDC-exemplaar houdt zijn status bij in een systeemtabel met de naam cdc.xdbcdc_state. Deze tabel kan op elk gewenst moment worden opgevraagd om de status van het CDC-exemplaar te controleren. Zie cdc.xdbcdc_state voor meer informatie over de tabel cdc.xdbcdc_state.
In de onderstaande tabel worden de CDC-instantietoestanden in de xdbcdc_state-tabel beschreven.
Voor elke status worden de volgende twee indicaties weergegeven voor de bijbehorende kolommen in de cdc.xdbcdc_state tabel:
De instantie is niet actief (er is momenteel geen Windows-proces dat deze afhandelt). Als de waarde voor de actieve kolom 1 is, wordt een subproces van de Oracle CDC-service uitgevoerd dat dit specifieke Oracle CDC-exemplaar verwerkt.
Als de waarde van de foutkolom 0 is, bevindt het Oracle CDC-exemplaar zich niet in een foutvoorwaarde. Als de waarde van de foutkolom 1 is, is er een fout die voorkomt dat het Oracle CDC-exemplaar wijzigingen verwerkt.
Als de foutkolom een waarde van 1 heeft en de actieve kolomwaarde ook 1 is, treedt er een herstelbare fout op voor het Oracle CDC-exemplaar, dat automatisch kan worden opgelost. Als de foutkolom een waarde van 1 heeft en de actieve kolom een waarde van 0 heeft, is in de meeste gevallen mogelijk een handmatige tijdelijke oplossing nodig om het probleem op te lossen voordat de verwerking kan worden hervat.
In de volgende tabel worden de verschillende statuscodes beschreven die het Oracle CDC-exemplaar in de statustabel kan rapporteren.
| Toestand | Actieve status-code | Foutstatuscode | Beschrijving | Deelstatus |
|---|---|---|---|---|
| GEANNULEERD | 0 | 1 | Het Oracle CDC-exemplaar draait niet. De substatus ABORTED geeft aan dat het Oracle CDC-exemplaar actief was en vervolgens onverwacht is gestopt. | De ABORTED-substatus wordt ingesteld door het hoofdexemplaar van de Oracle CDC-service wanneer het ontdekt dat het Oracle CDC-exemplaar niet actief is terwijl de status ACTIEF is. |
| FOUT | 0 | 1 | Het Oracle CDC-exemplaar draait niet. De foutstatus geeft aan dat het CDC-exemplaar actief was, maar vervolgens een fout heeft aangetroffen die niet kan worden hersteld en uitgeschakeld. | ONJUIST GECONFIGUREERD: er is een onherstelbare configuratiefout gedetecteerd. WACHTWOORD VEREIST: er is geen wachtwoord ingesteld voor de Change Data Capture Designer voor Oracle by Attunity of het geconfigureerde wachtwoord is ongeldig. Dit kan worden veroorzaakt door een wijziging in het wachtwoord van de service-asymmetrische sleutel. |
| LOPEND | 1 | 0 | Het CDC-exemplaar draait en verwerkt wijzigingsregistraties. | IdLE: alle wijzigingsrecords zijn verwerkt en opgeslagen in de doelbeheertabellen (_CT). Er is geen actieve transactie met de besturingstabellen. VERWERKING: Er worden wijzigingsrecords verwerkt die nog niet naar de besturingstabellen (_CT) zijn geschreven. |
| GESTOPT | 0 | 0 | Het CDC-exemplaar draait niet. | De STOP-substatus geeft aan dat het CDC-exemplaar actief was en vervolgens correct is gestopt. |
| GESCHORST | 1 | 1 | Het CDC-exemplaar wordt uitgevoerd, maar de verwerking wordt onderbroken vanwege een herstelbare fout. | VERBINDING VERBROKEN: de verbinding met de Oracle-brondatabase kan niet tot stand worden gebracht. De verwerking wordt hervat zodra de verbinding is hersteld. OPSLAG: De opslag is vol. De verwerking wordt hervat wanneer de opslag beschikbaar wordt. In sommige gevallen wordt deze status mogelijk niet weergegeven omdat de statustabel niet kan worden bijgewerkt. LOGGER: De logger is verbonden met Oracle, maar kan de Oracle-transactielogboeken niet lezen vanwege een tijdelijk probleem. |
| DATAERROR | x | x | Deze statuscode wordt alleen gebruikt voor de xdbcdc_trace tabel. Deze wordt niet weergegeven in de xdbcdc_state tabel. Traceringsrecords met deze status geven een probleem aan met een Oracle-logboekrecord. De ongeldige logboekrecord wordt als blob opgeslagen in de gegevenskolom . | BADRECORD: De gekoppelde logboekrecord kan niet worden geparseerd. CONVERT-ERROR: de gegevens in sommige kolommen kunnen niet worden geconverteerd naar de doelkolommen in de capture-tabel. Deze status kan alleen worden weergegeven als de configuratie aangeeft dat conversiefouten traceringsrecords moeten produceren. |
Omdat de Oracle CDC-servicestatus is opgeslagen in SQL Server, kunnen er gevallen zijn waarin de statuswaarde in de database mogelijk niet overeenkomt met de werkelijke status van de service. Het meest voorkomende scenario is wanneer de service de verbinding met SQL Server verliest en deze om welke reden dan ook niet kan hervatten. In dat geval wordt de status die is opgeslagen in cdc.xdbcdc_state verouderd. Als de tijdstempel van de laatste update (UTC) langer is dan een minuut oud, is de status waarschijnlijk verlopen. In dit geval gebruikt u De Logboeken van Windows om aanvullende informatie te vinden over de status van de service.
Foutafhandeling
In deze sectie wordt beschreven hoe de Oracle CDC-service fouten verwerkt.
Loggen
De Oracle CDC-service genereert informatie over fouten op een van de volgende plaatsen.
Het Windows-gebeurtenislogboek, dat wordt gebruikt met logboekregistratiefouten en om de levenscyclus van Oracle CDC Service aan te geven (starten, stoppen, (opnieuw)verbinding maken met het doel-SQL Server-exemplaar).
De MSXDBCDC.dbo.xdbcdc_trace tabel, die wordt gebruikt voor algemene logboekregistratie en tracering door het hoofdproces van de Oracle CDC-service.
De <cdc-database>.cdc.xdbcdc_trace tabel, die wordt gebruikt voor algemene logboekregistratie en tracering door Oracle CDC-exemplaren. Dit betekent dat fouten met betrekking tot een specifiek Oracle CDC-exemplaar worden vastgelegd in de traceringstabel van dat exemplaar.
Informatie wordt geregistreerd door de Oracle CDC-service wanneer de service:
Wordt gestart of gestopt door de servicebeheerder.
Kan geen verbinding maken met het bijbehorende SQL Server-exemplaar, maar wanneer de verbinding na een storing succesvol tot stand is gebracht, is het bruikbaar.
Er treedt een fout op bij het opstarten van Oracle CDC Service-exemplaren.
Detecteert dat een Oracle CDC (Change Data Capture)-exemplaar is afgebroken.
Er treedt een onverwachte fout op.
Informatie wordt vastgelegd door de CDC-instantie wanneer de instantie:
Is ingeschakeld of uitgeschakeld.
Er treedt een fout op.
Herstelt van een herstelbare fout.
De traceringstabel wordt ook gebruikt voor het vastleggen van gedetailleerde traceringsinformatie voor probleemoplossing.
Bron-Oracle-verbindingsfouten behandelen
De Oracle CDC-service heeft een permanente verbinding met de Oracle-brondatabase nodig. Veel verbindingsfouten die niet zijn gerelateerd aan de serviceconfiguratie (zoals netwerkfouten) worden beschouwd als tijdelijk. Als de Oracle CDC-service geen verbinding kan maken met de Oracle-database (op het begin of tijdens het werk na een verbroken verbinding), wordt de status van de service gewijzigd in ONDERBROKEN/VERBROKEN en wordt er een lus voor opnieuw proberen uitgevoerd waarbij de verbinding regelmatig opnieuw wordt geprobeerd. Wanneer de verbinding opnieuw tot stand is gebracht, wordt de verwerking voortgezet.
Andere typen verbindingsfouten zijn niet tijdelijk (bijvoorbeeld ongeldige referenties, onvoldoende bevoegdheden en ongeldig databaseadres). Wanneer deze fouten optreden, wordt de status van de Oracle CDC-service ingesteld op ERROR/MISCONFIGURED of op ERROR/PASSWORD-REQUIRED en wordt de service uitgeschakeld. Wanneer de gebruiker de onderliggende fout corrigeert, moet het Oracle CDC-exemplaar handmatig opnieuw worden ingeschakeld om de verwerking te hervatten.
Wanneer het niet duidelijk is of de fout tijdelijk is, is het raadzaam om ervan uit te gaan dat deze tijdelijk is.
Verbindingsfouten van doel-SQL Server afhandelen
De Oracle CDC-service heeft een bestendige verbinding met het SQL Server-doelexemplaar nodig. Deze verbinding wordt gebruikt om:
Zorg ervoor dat er momenteel geen andere services met dezelfde naam werken met dit SQL Server-exemplaar.
Controleer welke Oracle CDC-instantie is ingeschakeld of uitgeschakeld en start (of stop) het subproces ervan.
Wanneer de service een verbinding tot stand brengt met het doel-SQL Server-exemplaar en controleert of het de enige Oracle CDC-service met deze naam is die werkt, kan deze controleren welke Oracle CDC-exemplaren zijn ingeschakeld en hun verwerkingsprocessen starten (daarna stopt de service deze processen wanneer deze zijn uitgeschakeld). De Oracle CDC-exemplaren gebruiken hun SQL Server-verbindingen om samen te werken met de CDC-database van het Oracle CDC-exemplaar.
Hoe fouten worden verwerkt wanneer de verbinding met de doel-SQL Server mislukt, is afhankelijk van of de fouten tijdelijk zijn.
Voor bekende niet-tijdelijke fouten (zoals slechte referenties, onvoldoende bevoegdheden, ongeldige verbindingsgegevens), registreert de service een fout in het Windows-gebeurtenislogboek en stopt (deze kan niet naar de traceringstabel schrijven omdat deze geen verbinding kan maken met SQL Server). In dit geval moet de gebruiker de fout oplossen en de Oracle CDC Windows-service opnieuw starten.
Voor tijdelijke fouten en onverwachte fouten wordt de bewerking meerdere keren opnieuw geprobeerd en als de fout zich gedurende een aanzienlijke periode blijft voordoen, stopt de CDC-service de subprocessen van het CDC-exemplaar en gaat deze terug naar de eerste verbindingspoging (tegen deze tijd heeft een Oracle CDC-service op een andere computer mogelijk al controle over de benoemde CDC-service genomen).
Omgaan met volledige opslagfouten op doel-SQL Server
Wanneer de Oracle CDC-service detecteert dat er geen nieuwe wijzigingsgegevens kunnen worden ingevoegd in de SQL Server CDC-doeldatabase, wordt er een waarschuwing naar het gebeurtenislogboek geschreven en wordt geprobeerd een traceringsrecord in te voegen (hoewel dit om dezelfde reden kan mislukken). Vervolgens wordt de bewerking in een bepaald interval opnieuw geprobeerd totdat deze is geslaagd.
Oracle CDC-fouten verwerken
Het Oracle CDC-exemplaar leest het Oracle-transactielogboek en verwerkt het. Als de CDC-verwerking een fout tegenkomt, wordt deze gerapporteerd in de cdc.xdbcdc_state tabel en moet de gebruiker handmatig ingrijpen op basis van de gemelde fout.
Het Oracle CDC-exemplaar is bijvoorbeeld mogelijk niet actief voor een langere duur en de vereiste Oracle-transactielogboekbestanden zijn niet meer beschikbaar. In dit geval moet de Oracle DBA de vereiste logboeken herstellen voor het Oracle CDC-exemplaar om de verwerking te hervatten.
Onverwachte fouten in Oracle CDC-instanties aanpakken
De Oracle CDC Service bewaakt zijn CDC Instance subprocessen. Wanneer een subproces van een CDC-exemplaar wordt afgebroken, wordt het door de CDC-service uitgeschakeld in de MSXDBCDC.dbo.xdbcdc_databases table en wordt de status van het cdc.xdbcdc_state bijgewerkt naar ABORTED. In dit geval wordt het standaarddialoogvenster voor Windows Foutrapportage gebruikt om deze fout te rapporteren voor verdere analyse.
Zie ook
Data Capture Designer voor Oracle by Attunity wijzigen
Het Oracle CDC-exemplaar