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.
De Oracle CDC-service is een Windows-service waarop het programma wordt uitgevoerd xdbcdcsvc.exe. De Oracle CDC-service kan worden geconfigureerd voor het uitvoeren van meerdere Windows-services op dezelfde computer, elk met een andere Windows-servicenaam. Het maken van meerdere Oracle CDC Windows-services op één computer wordt vaak gedaan om een betere scheiding tussen deze services te bereiken, of wanneer elk met een ander SQL Server-exemplaar moet werken.
Er wordt een Oracle CDC-service gemaakt met behulp van de Oracle CDC Service-configuratieconsole of wordt gedefinieerd via de opdrachtregelinterface die is ingebouwd in het xdbcdcsvc.exe-programma. In beide gevallen is elke Oracle CDC-service die wordt aangemaakt gekoppeld aan één SQL Server-exemplaar (dat kan worden geclusterd of gespiegeld met Always On-installatie) en maken de verbindingsgegevens (verbindingsreeks en toegangsgegevens) deel uit van de serviceconfiguratie.
Wanneer een Oracle CDC-service wordt gestart, probeert deze verbinding te maken met het SQL Server-exemplaar waaraan deze is gekoppeld, haalt u de lijst op met Oracle CDC-exemplaren die moeten worden verwerkt en voert u een eerste omgevingsvalidatie uit. Fouten tijdens het opstarten van de service en eventuele informatie over starten/stoppen worden altijd naar het gebeurtenislogboek van de Windows-toepassing geschreven. Wanneer er een verbinding met SQL Server tot stand is gebracht, worden alle fouten en informatieberichten naar de dbo.xdbcdc_trace tabel in de MSXDBCDC-database van het SQL Server-exemplaar geschreven. Een van de controles die tijdens het opstarten zijn uitgevoerd, is verificatie dat er momenteel geen andere Oracle CDC-service met dezelfde naam werkt. Als een service met dezelfde naam momenteel is verbonden vanaf een andere computer, voert de Oracle CDC-service een wachtlus in en wacht tot de andere service de verbinding heeft verbroken voordat u doorgaat met het verwerken van het Oracle CDC-werk.
Wanneer de Oracle CDC-service alle opstartverificaties doorgeeft, wordt de dbo.xdbcdc_databases tabel in de MSXDBCDC-database gecontroleerd op alle ingeschakelde Oracle CDC-exemplaren. Voor elk ingeschakeld Oracle CDC-exemplaar start de service een subproces om dat Oracle CDC-exemplaar af te handelen.
Wanneer een Oracle CDC-instantie wordt gestart, krijgt deze toegang tot de SQL Server CDC-database met dezelfde naam als de CDC-instantie en haalt het de status van de vorige uitvoering op. Ook wordt gecontroleerd of alles goed wordt uitgevoerd. Vervolgens wordt de verwerking van wijzigingen hervat; Het lezen van de Oracle-transactielogboeken en het schrijven van wijzigingen in de CDC-database.
De Oracle CDC Service bewaakt periodiek de dbo.xdbcdc_tables tabel in de MSXDBCDC-database om te bepalen of er configuratiewijzigingen zijn aangebracht in een van de Oracle CDC Instance-configuraties. Als er een wijziging wordt gevonden, meldt de Oracle CDC Service aan het Oracle CDC Instance dat deze zijn configuratie moet controleren op wijzigingen. De meeste configuratiewijzigingen, zoals het toevoegen en verwijderen van capture-exemplaren, kunnen worden toegepast terwijl het Oracle CDC-exemplaar is ingeschakeld, anderen vereisen dat het Oracle CDC-exemplaar opnieuw wordt opgestart.
Wanneer u de Oracle CDC Designer-console gebruikt, worden wijzigingen automatisch gedetecteerd. Wanneer u de Oracle CDC-configuratie rechtstreeks bijwerkt met behulp van SQL, moet de volgende procedure worden aangeroepen voor de Oracle CDC-service om de configuratiewijziging op te merken:
DECLARE @dbname nvarchar(128) = 'HRcdc'
EXECUTE [MSXDBCDC].[dbo].[xdbcdc_update_config_version] @dbname
GO
Het Oracle CDC Instance-proces werkt de status bij in de systeemtabel cdc.xdbcdc_state en schrijft foutinformatie naar de cdc.xdbcdc_trace tabel. De xdbcdc_state-tabel is handig voor het bewaken van de status van het Oracle CDC-exemplaar. Het biedt een up-to-date status, verschillende tellers (zoals het aantal wijzigingen dat is gelezen uit Oracle, het aantal wijzigingen dat naar SQL Server is geschreven, het aantal vastgelegde transacties dat is geschreven en het huidige aantal lopende transacties) en een latentie-indicator.
De configuratie van het Oracle CDC-exemplaar wordt opgeslagen in de cdc.xdbcdc_config tabel. Dit is de tabel waarmee de Oracle CDC Designer-console werkt. Omdat de volledige configuratie van een Oracle CDC-exemplaar is gevonden in het doel-SQL Server-exemplaar en CDC-databases, is het mogelijk om SQL Server-implementatiescripts te maken voor een Oracle CDC-exemplaar. Dit wordt gedaan met behulp van de Oracle CDC Service Configuration- en Oracle CDC Designer-consoles.
Beveiligingsoverwegingen
Hieronder worden de beveiligingsvereisten beschreven die nodig zijn om met de CDC-service voor Oracle te werken.
Beveiliging van bronorakelgegevens
De Oracle CDC-service vereist geen toegang tot Oracle-brongegevens en wordt beveiligd door ervoor te zorgen dat de referenties voor logboekanalyse geen SELECT-machtiging geven voor Oracle-tabellen van klanten.
Beveiliging van bron-Oracle-wijzigingsgegevens
De Oracle CDC-service wordt geleverd met logboekanalysereferenties waarmee de service wijzigingen in elke tabel in de Oracle-database kan vastleggen. Wijzigingsgegevens hebben niet de fijngranulaire toegangsmachtigingen die reguliere tabellen wel hebben. Daardoor omzeilen ze de ingebouwde Oracle-toegangsregels.
Vastgelegde Oracle-brontabellen hebben lege gespiegelde tabellen met dezelfde schema- en tabelnaam in de CDC-database. De vastgelegde gegevens worden opgeslagen in SQL Server-capture-exemplaren en bieden dezelfde beveiliging als voor wijzigingen die zijn vastgelegd vanuit de SQL Server-database. Als u toegang wilt krijgen tot de wijzigingsgegevens die zijn gekoppeld aan een opname-exemplaar, moet de gebruiker toegang krijgen tot alle vastgelegde kolommen van de gekoppelde gespiegelde tabel. Als er bovendien een gatingsrol is gespecificeerd wanneer het capture-exemplaar wordt gemaakt, moet de aanroeper ook lid zijn van deze gatingsrol. Andere algemene functies voor het vastleggen van wijzigingsdata voor toegang tot metagegevens zijn toegankelijk voor alle databasegebruikers via de openbare rol. De toegang tot de geretourneerde metagegevens is echter meestal ook beperkt door gebruik te maken van selectie-toegang tot de onderliggende brontabellen en lidmaatschap in gedefinieerde toegangsrollen.
Dit betekent dat gebruikers met de vaste serverfunctie sysadmin of de db_owner vaste databaserol volledige toegang hebben (standaard) tot de vastgelegde gegevens, en verdere toegang kan worden verleend via gatingsrollen of door bepaalde toegang te verlenen tot de vastgelegde kolommen.
Beveiliging van bronreferenties voor Oracle-logboekanalyse
De Oracle CDC-serviceconfiguratie, die is opgeslagen in de CDC-database (in de cdc.xdbcdc_config tabel), bevat de gebruikersnaam en het bijbehorende wachtwoord voor logboekanalyse.
Het wachtwoord voor logboekanalyse wordt versleuteld opgeslagen met behulp van een asymmetrische sleutel met de vaste naam xdbcdc_asym_key die automatisch wordt gemaakt met de volgende opdracht:
USE [<cdc-database-name>]
CREATE ASYMMETRIC KEY xdbcdc_asym_key
WITH ALGORITHM = RSA_1024
ENCRYPTION BY PASSWORD = '<cdc-database-name><asym-key-password>'
Als een ander algoritme wordt gebruikt, kan deze sleutel worden verwijderd en kan een nieuwe met dezelfde naam en versleuteld met hetzelfde wachtwoord worden gemaakt.
Het asymmetrische sleutelwachtwoord is het hoofdwachtwoord dat is opgeslagen in het register onder het pad HKLM\Software\Microsoft\XDBCDCSVC\\<service-name>. Deze sleutel is alleen toegankelijk voor lokale beheerders en voor het Oracle CDC Windows-serviceaccount. De sleutel bevat een versleutelde binaire waarde AsymmetricKeyPassword die het asymmetrische sleutelwachtwoord heeft opgeslagen. Toegang tot deze registersleutel is vereist om toegang te krijgen tot de Oracle-logboekanalysereferenties.
Als u de component ENCRYPTION BY PASSWORD wilt gebruiken, moet het wachtwoord voldoen aan de windows-wachtwoordbeleidsvereisten voor de computer waarop het SQL Server-exemplaar wordt uitgevoerd. Dit wordt gedaan door het wachtwoord voor de asymmetrische sleutel te selecteren volgens dat beleid.
Als het wachtwoord voor de asymmetrische sleutel verloren gaat, moeten de referenties voor logboekanalyse voor elk van de Oracle CDC-exemplaren opnieuw worden opgegeven in de Oracle CDC Service Designer.
De asymmetrische sleutel wordt automatisch gemaakt in de CDC-database wanneer de CDC-service een Oracle-exemplaar-CDC-database detecteert die niet over deze asymmetrische sleutel beschikt of wanneer de sleutel bestaat, maar het wachtwoord niet overeenkomt.
Windows-serviceaccount voor Oracle CDC-service
Voor het serviceaccount dat wordt gebruikt met de Oracle CDC Windows-service zijn geen extra bevoegdheden vereist. Dit account moet zowel de Oracle Native Client-API als de ODBC-API van de SYSTEEMeigen SQL Server-client kunnen gebruiken. Het moet ook toegang hebben tot de serviceconfiguratiesleutel in het register (deze CDC Service Configuration-console stelt hiervoor de ACL in).
In deze sectie
Zie ook
Een lokale CDC-service beheren
Een Oracle CDC-service beheren