Delen via


De Oracle CDC-databases

Belangrijk

Change Data Capture voor Oracle door Attunity is nu verouderd verklaard. Raadpleeg de aankondigingvoor meer informatie.

Een Oracle CDC-exemplaar is gekoppeld aan een SQL Server-database met dezelfde naam op het doel-SQL Server-exemplaar. Deze database wordt de Oracle CDC-database (of de CDC-database) genoemd.

De CDC-database wordt gemaakt en geconfigureerd met behulp van de Oracle CDC Designer-console en bevat de volgende elementen:

  • Een cdc schema dat is gemaakt door de database voor SQL Server CDC in te schakelen.

  • Een set cdc.xdbcdc_xxxx tabellen die worden gebruikt door de Oracle CDC-instance.

  • Een set lege gespiegelde tabellen met de definities van de vastgelegde tabellen in tuphe Source Oracle-database.

  • Een set wijzigingstabellen en wijzigingsfuncties voor toegang die worden gegenereerd door het SQL Server CDC-mechanisme en die identiek zijn aan de functies die worden gebruikt in het normale, niet-Oracle, SQL Server CDC.

Het cdc schema is in eerste instantie alleen toegankelijk voor de leden van de vaste databaserol dbowner . Toegang tot de wijzigingstabellen en wijzigingsfuncties wordt bepaald door hetzelfde beveiligingsmodel als de SQL Server CDC. Zie Security Model voor meer informatie over het beveiligingsmodel.

De CDC-database maken

In de meeste gevallen wordt de CDC-database gemaakt met behulp van de CDC Designer-console, maar deze kan ook worden gemaakt met een CDC-implementatiescript dat wordt gegenereerd met behulp van de CDC Designer-console. De systeembeheerder van SQL Server kan indien nodig de database-instellingen wijzigen (voor items zoals opslag, beveiliging of beschikbaarheid).

Voor meer informatie over het gebruik van de CDC Designer-console om de databasetabellen en de benodigde scripts te maken, zie De wizard Nieuw exemplaar gebruiken.

CDC-gebruikersrollen in de database

Wanneer een CDC-database wordt gemaakt en ingeschakeld voor CDC, wordt een databasegebruiker met de naam cdc_service gemaakt in de CDC-database en is gekoppeld aan de SQL Server-aanmelding waarmee de Oracle CDC-service is geconfigureerd. Deze gebruiker wordt lid gemaakt van de databaserollen db_datareader, db_datawriter en db_ddladmin . Als de SQL Server-aanmelding ook is gekoppeld aan de dbo gebruiker, wordt de cdc_service niet gemaakt.

Met deze roltoewijzing kan de Oracle CDC-service de tabellen onder het cdc schema bijwerken met vastgelegde gegevens en met controlegegevens.

Wanneer een CDC-database wordt gemaakt en CDC-bron-Oracle-tabellen zijn ingesteld, kan de eigenaar van de CDC-database SELECT-machtiging verlenen voor gespiegelde tabellen en SQL Server CDC-gatingsrollen definiëren om te bepalen wie toegang heeft tot de wijzigingsgegevens.

Gespiegelde tabellen

Voor elke vastgelegde tabel, <schemanaam>.<tabelnaam>, in de Oracle-brondatabase, wordt een vergelijkbare lege tabel gemaakt in de CDC-database, met dezelfde schema- en tabelnaam. Oracle-brontabellen met de schemanaam cdc (niet hoofdlettergevoelig) kunnen niet worden vastgelegd omdat het cdc schema in SQL Server is gereserveerd voor de SQL Server CDC.

De gespiegelde tabellen zijn leeg; er worden geen gegevens opgeslagen. Ze worden gebruikt om de standaard SQL Server CDC-infrastructuur in te schakelen die wordt gebruikt door het Oracle CDC-exemplaar. Als u wilt voorkomen dat gegevens in de gespiegelde tabellen worden ingevoegd of bijgewerkt, worden alle bewerkingen UPDATE, DELETE en INSERT geweigerd voor PUBLIC. Dit zorgt ervoor dat ze niet kunnen worden gewijzigd.

Toegang tot het wijzigen van gegevens

Vanwege het SQL Server-beveiligingsmodel dat wordt gebruikt om toegang te krijgen tot de wijzigingsgegevens die zijn gekoppeld aan een capture-exemplaar, moet de gebruiker toegang krijgen select tot alle vastgelegde kolommen van de bijbehorende gespiegelde tabel (toegangsmachtigingen voor de oorspronkelijke Oracle-tabellen bieden geen toegang tot de wijzigingstabellen in SQL Server). Zie Security Model voor meer informatie over het SQL Server-beveiligingsmodel.

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 wijzigingsgegevens voor het openen van metagegevens zijn toegankelijk voor alle databasegebruikers via de PUBLIC-rol; toegang tot de geretourneerde metagegevens is meestal beperkt met behulp van selectieve toegang tot de onderliggende brontabellen en door lidmaatschap van beperkingsrollen.

Wijzigingsgegevens kunnen worden gelezen door speciale op tabellen gebaseerde functies aan te roepen die worden gegenereerd door het SQL Server CDC-onderdeel wanneer een capture-exemplaar wordt gemaakt. Zie Change Data Capture Functions (Transact-SQL)voor meer informatie over deze functie.

Toegang tot CDC-gegevens via het CDC-brononderdeel Integration Services is onderhevig aan dezelfde regels.

De CDC-databasetabellen

In deze sectie worden de volgende tabellen in de CDC-database beschreven.

Tabellen wijzigen (_CT)

De wijzigingstabellen worden gemaakt op basis van de gespiegelde tabellen. Ze bevatten de wijzigingsgegevens die zijn vastgelegd vanuit de Oracle-database. De tabellen hebben een naam volgens de volgende conventie:

[cdc]. [<capture-instance>_CT]

Wanneer vastleggen in eerste instantie is ingeschakeld voor tabel <schema-name>.<table-name>, is <schema-name>_<table-name>de standaardnaam van het capture-exemplaar. Bijvoorbeeld, de standaardnaam van het capture-exemplaar voor de Oracle HR.EMPLOYEES-tabel is HR_EMPLOYEES en de geassocieerde wijzigingstabel is [cdc]. [HR_EMPLOYEES_CT]

De capture-tabellen worden geschreven naar het Oracle CDC-exemplaar. Ze worden gelezen met speciale tabelwaardefuncties die door SQL Server worden gegenereerd wanneer het capture-exemplaar wordt gemaakt. Bijvoorbeeld: fn_cdc_get_all_changes_HR_EMPLOYEES. Zie Change Data Capture Functions (Transact-SQL)voor meer informatie over deze CDC-functies.

cdc.lsn_time_mapping

De [cdc].[ lsn_time_mapping] tabel wordt gegenereerd door het SQL Server CDC-onderdeel. Het gebruik in het geval van Oracle CDC verschilt van het normale gebruik.

Voor Oracle CDC zijn de LSN-waarden die in deze tabel zijn opgeslagen, gebaseerd op de SCN-waarde (Oracle System Change Number) die aan de wijziging is gekoppeld. De eerste 6 bytes van de LSN-waarde is het oorspronkelijke Oracle SCN-nummer.

Wanneer u de Oracle CDC gebruikt, worden in de tijdkolommen (tran_begin_time en tran_end_time) ook de UTC-tijd van de wijziging opgeslagen in plaats van de lokale tijd, net als bij de reguliere SQL Server CDC. Dit zorgt ervoor dat wijzigingen in zomertijd geen invloed hebben op de gegevens die zijn opgeslagen in de lsn_time_mapping.

cdc.xdbcdc_config

Deze tabel bevat de configuratiegegevens voor het Oracle CDC-exemplaar. Deze wordt bijgewerkt met behulp van de CDC Designer-console. Deze tabel heeft slechts één rij.

In de volgende tabel worden de cdc.xdbcdc_config tabelkolommen beschreven.

Onderdeel Beschrijving
Versie Hiermee wordt de versie van de CDC-exemplaarconfiguratie bijgehouden. Deze wordt telkens bijgewerkt wanneer de tabel wordt bijgewerkt en telkens wanneer een nieuw vastleg-exemplaar wordt toegevoegd of een bestaand vastleg-exemplaar wordt verwijderd.
verbindingsreeks Een Oracle-verbindingsreeks. Een basisvoorbeeld is:

<server>:<port>/<instance> (bijvoorbeeld erp.contoso.com:1521/orcl).

De verbindingsreeks kan ook een Oracle Net Connect-descriptor opgeven, (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=erp.contoso.com) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=orcl)))bijvoorbeeld.

Als u een directoryserver of tnsnames gebruikt, kan de verbindingsstring de naam van de verbinding zijn.

Voor meer informatie over Oracle-verbindingsreeksen raadpleegt u de handleiding voor programmeurs van gespreksinterface, die gedetailleerde informatie biedt over oracle-databaseverbindingsreeksen voor de Oracle Instant Client die wordt gebruikt door de Oracle CDC-service.
gebruik_windows_authenticatie Een Booleaanse waarde die het volgende kan zijn:

0: Er wordt een Oracle-gebruikersnaam en -wachtwoord opgegeven voor verificatie (de standaardinstelling)

1: Windows-verificatie wordt gebruikt om verbinding te maken met de Oracle-database. U kunt deze optie alleen gebruiken als de Oracle-database is geconfigureerd voor gebruik met Windows-verificatie.
gebruikersnaam De naam van de Oracle-databasegebruiker voor logboekanalyse. Dit is alleen verplicht als use_windows_authentication = 0.
wachtwoord Het wachtwoord voor de Oracle-databasegebruiker voor logboekanalyse. Dit is alleen verplicht als use_windows_authentication = 0.
transactie_fase_timeout De tijd, in seconden, dat een niet-doorgevoerde Oracle-transactie in het geheugen wordt bewaard voordat deze naar de cdc.xdbcdc_staged_transactions tabel wordt geschreven. De standaardwaarde is 120 seconden.
geheugenlimiet De limiet voor de hoeveelheid geheugen, in Mb, die kan worden gebruikt voor het opslaan van gegevens in het cachegeheugen. Een lagere instelling zorgt ervoor dat er meer transacties naar de cdc.xdbcdc_staged_transactions tabel worden geschreven. De standaardwaarde is 50 Mb.
Opties Een lijst met opties in de vorm van naam[=waarde][; ] - deze wordt gebruikt voor het opgeven van secundaire opties (bijvoorbeeld traceren, afstemmen). Zie de onderstaande tabel voor een beschrijving van de beschikbare opties.

De volgende tabel beschrijft de beschikbare opties.

Naam Verstek Minuut Max Statisch Beschrijving
traceren Onwaar - - Onwaar De beschikbare waarden zijn:

Klopt

Onwaar

op

uit
cdc_bijwerk_status_interval 10 1 120 Onwaar De grootte (in Kbytes) van geheugensegmenten die zijn toegewezen voor een transactie (een transactie kan meer dan één segment toewijzen). Zie de kolom memory_limit in cdc.xdbcdc_config tabel.
target_max_gegroepeerde_transacties 100 1 1000 Klopt Het maximum aantal Oracle-transacties dat als één transactie in SQL Server CT-tabellen kan worden verwerkt.
target_idle_lsn_update_interval 10 0 1 Onwaar Het interval (in seconden) voor het bijwerken van de lsn_time_mapping tabel wanneer de vastgelegde tabellen geen activiteit hebben.
traceerbewaarperiode 24 1 24*31 Onwaar De hoeveelheid tijd (in uren om berichten in de traceringstabel te bewaren).
sql_reconnect_interval 2 2 3600 Onwaar De hoeveelheid tijd (in seconden) die moet worden gewacht voordat u opnieuw verbinding maakt met SQL Server. Dit interval wordt gebruikt naast de time-out voor verbinding van de SQL Server-client.
sql_reconnect_limit -1 -1 -1 Onwaar Het maximum aantal nieuwe verbindingen van SQL Server. De standaard -1 betekent dat het proces opnieuw verbinding probeert te maken totdat het stopt.
cdc_herstartlimiet 6 -1 3600 Onwaar In de meeste gevallen start de CDC-service een abnormaal beëindigd CDC-exemplaar automatisch opnieuw op. Deze eigenschap definieert na hoeveel fouten per uur de service stopt om het exemplaar opnieuw op te starten. De waarde -1 betekent dat het exemplaar altijd opnieuw moet worden opgestart.

De service keert terug om het exemplaar opnieuw op te starten na een update van de configuratietabel.
cdc geheugenrapport 0 0 1000 Onwaar Als de waarde van de parameter is gewijzigd, wordt het geheugenrapport van het CDC-exemplaar afgedrukt in de traceringstabel.
target_command_timeout 600 1 3600 Onwaar Commando-time-out bij werken met SQL Server.
bron_tekenset - - - Klopt Kan worden ingesteld op een specifieke Oracle-codering die moet worden gebruikt in plaats van de codepagina van de Oracle-database. Dit kan van toepassing zijn wanneer de daadwerkelijke codering van de tekengegevens verschilt van de codepagina van de Oracle-database.
bronfout_herhaalinterval 30 1 3600 Onwaar Wordt gebruikt voordat u het opnieuw probeert bij verschillende fouten, zoals een verbindingsfout of een tijdelijk gebrek aan synchronisatie tussen systeemtabellen.
source_prefetch_size 100 1 10.000 Klopt Grootte van de voorlaadbatch.
source_max_tables_in_query 100 1 10.000 Klopt Maximum aantal tabellen in WHERE-component voordat u overschakelt naar het Oracle-logboek zonder tabelfiltering.
interval_voor_hernieuwde_leespogingen_uit_bron 2 1 3600 Onwaar De hoeveelheid tijd die de bron wacht voordat de Oracle-transactielogboeken op EOF opnieuw worden gelezen.
bron_herverbinding_interval 30 1 3600 Onwaar Hoe lang (in seconden) moet worden gewacht voordat u opnieuw verbinding probeert te maken met de brondatabase.
bron_herverbinding_limiet -1 -1 Onwaar Het maximum aantal nieuwe verbindingen van de brondatabase. De standaard -1 betekent dat het proces opnieuw verbinding probeert te maken totdat het is gestopt.
bron_commando_time-out 30 1 3600 Onwaar Verbindingstime-out bij gebruik van Oracle.
bron_verbinding_timeout 30 1 3600 Onwaar Time-out van verbinding bij werken met SQL Server.
trace_data_fouten Klopt - - Onwaar Booleaans. True geeft aan gegevensconversie- en afkappingsfouten vast te leggen.
CDC_stop_on_breaking_schema_changes Onwaar - - Onwaar Booleaans. True geeft aan te stoppen wanneer er een wijziging in het schema wordt gedetecteerd.

False geeft aan dat de gespiegelde tabel wordt verwijderd en het exemplaar wordt vastgelegd.
source_orakel_thuis - - Onwaar Kan worden ingesteld op een specifiek Oracle Home-pad of een Oracle Home Name die door het CDC-exemplaar wordt gebruikt om verbinding te maken met Oracle.

cdc.xdbcdc_state

Deze tabel bevat informatie over de persistente status van het Oracle CDC-exemplaar. De status van de opname wordt gebruikt in herstel- en failoverscenario's en voor statuscontrole.

In de volgende tabel worden de cdc.xdbcdc_state tabelkolommen beschreven.

Onderdeel Beschrijving
stand van zaken De huidige statuscode voor het huidige Oracle CDC-exemplaar. De status beschrijft de huidige status voor het CDC.
sub_status Een status op het tweede niveau die aanvullende informatie biedt over de huidige status.
actief Een Booleaanse waarde die het volgende kan zijn:

0: Het Oracle CDC Instance-proces is niet actief.

1: Het Oracle CDC Instance-proces is actief.
fout Een Booleaanse waarde die het volgende kan zijn:

0: Het Oracle CDC-instantieproces heeft geen foutstatus.

1: Het Oracle CDC-exemplaar heeft een foutstatus.
statusbericht Een tekenreeks die een beschrijving geeft van de fout of status.
tijdstempel De tijdstempel met de tijd (UTC) waarop de opnamestatus voor het laatst is bijgewerkt.
actieve_opname_knooppunt De naam van de host (de host kan een knooppunt in een cluster zijn) waarop momenteel de Oracle CDC-service en het Oracle CDC-exemplaar worden uitgevoerd (dat de Oracle-transactielogboeken verwerkt).
laatste_transactie_tijdstempel Een tijdstempel met de tijd (UTC) van wanneer de laatste transactie naar de wijzigingstabellen is geschreven.
laatste_wijzigingstijdstip Een tijdstempel met de tijd (UTC) toen de meest recente wijzigingsrecord werd gelezen uit het Oracle-transactielogboek van de bron. Deze tijdstempel helpt bij het identificeren van de huidige latentie van het CDC-proces.
transaction_log_head_cn Het meest recente wijzigingsnummer (CN) gelezen uit het Oracle-transactielogboek.
transactie_log_staart_cn Het wijzigingsnummer (CN) in het Oracle-transactielogboek waar het Oracle CDC-exemplaar opnieuw wordt gepositioneerd bij een herstart of herstel.
current_cn Het meest recente wijzigingsnummer (CN) dat bekend staat in de brondatabase.
softwareversie De interne versie van de Oracle CDC-service.
voltooide_transacties Het aantal transacties dat is verwerkt sinds het CDC voor het laatst opnieuw is ingesteld.
geschreven_wijzigingen Het aantal wijzigingsrecords dat naar de SQL Server-wijzigingstabellen is geschreven.
lees_wijzigingen Het aantal wijzigingsrecords dat wordt gelezen uit het Oracle-transactielogboek van de bron.
geplande_transacties Het aantal actieve transacties dat in de cdc.xdbcdc_staged_transactions tabel is gefaseerd.

cdc.xdbcdc_trace

Deze tabel bevat informatie over de werking van het CDC-exemplaar. Informatie die in deze tabel is opgeslagen, bevat foutrecords, belangrijke statuswijzigingen en traceringsrecords. Foutinformatie wordt ook naar het Windows-gebeurtenislogboek geschreven om ervoor te zorgen dat de informatie beschikbaar is als de cdc.xcbcdc_trace tabel niet beschikbaar is.

In de volgende tabel worden de cdc.xdbcdc_trace tabelkolommen beschreven.

Onderdeel Beschrijving
tijdstempel De exacte UTC-tijdstempel waarop de traceringsrecord is geschreven.
soort Bevat een van de volgende waarden.

FOUT

INFORMATIE

SPOOR
knooppunt De naam van het knooppunt waarop de record is geschreven.
stand van zaken De statuscode die wordt gebruikt door de statustabel.
sub_status De substatuscode die wordt gebruikt door de statustabel.
statusbericht Het statusbericht dat wordt gebruikt door de statustabel.
gegevens Aanvullende gegevens voor gevallen waarin de fout- of traceringsrecord een nettolading bevat (bijvoorbeeld een beschadigde logboekrecord).

cdc.xdbcdc_staged_transactions

In deze tabel worden wijzigingsrecords opgeslagen voor grote of langlopende transacties totdat de transactiedoorvoering of terugdraaigebeurtenis is vastgelegd. Met de Oracle CDC-service worden logboekrecords vastgelegd op transactiedoorvoertijd en vervolgens op chronologische volgorde voor elke transactie. Logboekrecords voor dezelfde transactie worden opgeslagen in het geheugen totdat de transactie eindigt en vervolgens naar de doelwijzigingstabel worden geschreven of verwijderd (in het geval van een terugdraaiactie). Omdat er een beperkte hoeveelheid geheugen beschikbaar is, worden grote transacties naar de cdc.xdbcdc_staged_transactions tabel geschreven totdat de transactie is voltooid. Transacties worden ook naar de faseringstabel geschreven wanneer ze lang worden uitgevoerd. Wanneer het Oracle CDC-exemplaar opnieuw wordt opgestart, hoeven de oude wijzigingen daarom niet opnieuw te worden gelezen uit de Oracle-transactielogboeken.

In de volgende tabel worden de cdc.xdbcdc_staged_transactions tabelkolommen beschreven.

Onderdeel Beschrijving
transactie-id De unieke transactie-id van de transactie die wordt gefaseerd.
sequentienummer Het aantal xcbcdc_staged_transactions rij voor de huidige transactie (beginnend met 0).
data_start_cn Het wijzigingsnummer (CN) voor de eerste wijziging in de gegevens in deze rij.
data_end_cn Het wijzigingsnummer (CN) voor de laatste wijziging in de gegevens in deze rij.
gegevens De gefaseerde wijzigingen voor de transactie in de vorm van een BLOB.

Zie ook

Data Capture Designer voor Oracle by Attunity wijzigen