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 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
cdcschema 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)
- cdc.lsn_time_mapping
- cdc.xdbcdc_config
- cdc.xdbcdc_state
- cdc.xdbcdc_trace
- cdc.xdbcdc_staged_transactions
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. |