Arbeiten mit dem Oracle CDC Service

Von Bedeutung

Change Data Capture für Oracle von Attunity ist inzwischen veraltet. Weitere Details finden Sie in der Ankündigung.

In diesem Abschnitt werden einige wichtige Konzepte des Oracle CDC Service beschrieben. Die in diesem Abschnitt enthaltenen Konzepte sind:

  • Die MSXDBCDC-Datenbank

    In diesem Abschnitt werden die Tabellen beschrieben, die in dieser Datenbank enthalten sind und wie es für CDC wichtig ist.

  • Die CDC-Datenbanken

    Dieser Abschnitt enthält eine kurze Beschreibung der CDC-Datenbanken. Diese Datenbanken werden mit der Oracle CDC Designer Console erstellt. Weitere Informationen zu den CDC-Datenbanken finden Sie in der Dokumentation zur Installation der CDC Designer Console.

  • Verwenden der Befehlszeile zum Konfigurieren des CDC-Diensts

    In diesem Abschnitt werden die Befehlszeilenbefehle beschrieben, die zum Konfigurieren des Oracle CDC-Diensts verwendet werden können.

Die MSXDBCDC-Datenbank

Die MSXDBCDC-Datenbank (Microsoft External-Database CDC) ist eine spezielle Datenbank, die bei Verwendung des CDC-Diensts für Oracle mit einer SQL Server-Instanz erforderlich ist.

Der Name dieser Datenbank kann nicht geändert werden. Wenn eine Datenbank namens MSXDBCDC in der SQL Server-Hostinstanz vorhanden ist und andere Tabellen als die vom CDC-Dienst für Oracle definierten enthält, kann die SQL Server-Hostinstanz nicht verwendet werden.

Die wichtigsten Verwendungsmöglichkeiten für diese Datenbank sind:

  • Dient als Registrierung von Oracle CDC Services, die einer SQL Server-Instanz zugeordnet sind. Diese Informationen werden für die Konfiguration und das Design von Diensten verwendet und unterstützen die Koordination mehrerer CDC-Dienste mit demselben Namen, die auf verschiedenen Knoten laufen, wobei ein Knoten der aktive ist.

  • Dient als Registrierung der Oracle CDC-Instanzen, die in einer SQL Server-Instanz enthalten sind, dem CDC-Dienst, der jede Instanz verarbeitet, und der jeweils verwendeten Konfigurationsversion. Diese Informationen entsprechen der is_cdc_enabled Spalte in der Sys.databases-Tabelle der Masterdatenbank. Der CDC-Dienst überprüft in regelmäßigen Abständen die dbo.xdbcdc_databases Tabelle, um Änderungen zu identifizieren, die an der CDC-Konfiguration oder an der Liste der erfassten Instanzen vorgenommen wurden.

  • Vorhalten von im Besitz von sysadminbefindlichen gespeicherten Prozeduren, die zum Erstellen und Verwalten von CDC-Instanzen verwendet werden. Diese ähneln den Systemprozeduren, die für die Implementierung des SQL Server CDC-Features verwendet werden.

Erstellen der MSXDBCDC-Datenbank

Bevor der Oracle CDC-Dienst definiert werden kann, muss eine MSXDBCDC-Datenbank erstellt werden. Sie können nur eine MSXDBCDC-Datenbank in einer SQL Server-Instanz erstellen. Die MSXDBCDC-Datenbank wird erstellt, wenn Sie eine SQL Server-Datenbank für Oracle CDC vorbereiten. Dies kann mithilfe der Oracle CDC Service Configuration Console oder durch Ausführen eines Erstellungsskripts erfolgen, das von der CDC Service Configuration Console generiert wird.

Der Besitzer dieser Datenbank ist der Oracle CDC Service Administrator, der alle oracle CDC-Instanzen steuern kann, die unter der SQL Server-Instanz gehostet werden.

Siehe auch:

Vorbereiten von SQL Server für CDC

Die MSXDBCDC-Datenbanktabellen

In diesem Abschnitt werden die folgenden Tabellen in der MSXDBCDC-Datenbank beschrieben.

dbo.xdbcdc_trace

In dieser Tabelle werden die Ablaufverfolgungsinformationen für den Oracle CDC Service gespeichert. Die in dieser Tabelle gespeicherten Informationen umfassen bedeutende Statusänderungen und Protokolldaten.

Der Oracle CDC Service schreibt Fehlereinträge und einige der Informationseinträge sowohl in das Windows-Ereignisprotokoll als auch in die Ablaufverfolgungstabelle. In einigen Fällen kann auf die Ablaufverfolgungstabelle nicht zugegriffen werden, in diesem Fall kann über das Ereignisprotokoll auf die Fehlerinformationen zugegriffen werden.

Im Folgenden werden die Elemente beschrieben, die in der dbo.xdbcdc_trace Tabelle enthalten sind.

Element BESCHREIBUNG
Zeitstempel Der genaue UTC-Zeitstempel, zu dem der Protokolldatensatz geschrieben wurde.
Typ Enthält einen der folgenden Werte.

FEHLER

INFO

TRACE
Knoten Der Name des Knotens, unter dem der Datensatz geschrieben wurde.
status Der Statuscode, der von der Statustabelle verwendet wird.
sub_status Der Unterstatuscode, der von der Statustabelle verwendet wird.
Statusnachricht Die Statusmeldung, die von der Statustabelle verwendet wird.
Quelle Der Name der Oracle CDC-Komponente, die den Protokolldatensatz erzeugt hat.
text_data Weitere Textdaten für Fälle, in denen der Fehler oder Ablaufverfolgungsdatensatz eine Textnutzlast enthält.
Binärdaten Zusätzliche Binärdaten für Fälle, in denen der Fehler- oder Protokolldatensatz eine binäre Nutzlast enthält.

Die Oracle CDC-Instanz löscht veraltete Ablaufverfolgungstabellenzeilen gemäß der Beibehaltungsrichtlinie für Änderungstabellen.

dbo.xdbcdc_databases

Diese Tabelle enthält die Namen von CDC Service für Oracle CDC-Datenbanken in der aktuellen SQL Server-Instanz. Jede Datenbank entspricht einer Oracle CDC-Instanz. Der Oracle CDC Service verwendet diese Tabelle, um zu bestimmen, welche Instanzen gestartet oder beendet werden sollen und welche Instanzen neu konfiguriert werden sollen.

In der folgenden Tabelle werden die Elemente beschrieben, die in der dbo.xdbcdc_databases Tabelle enthalten sind.

Element BESCHREIBUNG
name Der Name der Oracle-Datenbank in der SQL Server-Instanz.
config_version Der Zeitstempel (UTC) der letzten Änderung in der entsprechenden CDC-Datenbank xdbcdc_config-Tabelle oder der Zeitstempel (UTC) für die aktuelle Zeile in dieser Tabelle.

Der UPDATE Trigger erzwingt einen Wert von GETUTCDATE() für dieses Element. config_version ermöglicht es dem CDC-Dienst, die CDC-Instanz zu identifizieren, die auf Konfigurationsänderungen überprüft werden muss, oder zum Aktivieren/Deaktivieren.
CDC-Dienstname Dieses Element bestimmt, welcher Oracle CDC-Dienst die ausgewählte Oracle-Datenbank verarbeitet.
aktiviert Gibt an, ob die Oracle CDC-Instanz aktiv (1) oder deaktiviert ist (0). Wenn der Oracle CDC Service startet, werden nur die Instanzen gestartet, die als aktiviert (1) gekennzeichnet sind.

Hinweis: Eine Oracle CDC-Instanz kann aufgrund eines Fehlers deaktiviert werden, der nicht erneut versucht werden kann. In diesem Fall muss die Instanz manuell neu gestartet werden, nachdem der Fehler behoben wurde.

dbo.xdbcdc_services

In dieser Tabelle sind die CDC-Dienste aufgeführt, die der SQL Server-Hostinstanz zugeordnet sind. Diese Tabelle wird von der CDC-Designerkonsole verwendet, um die Liste der CDC-Dienste zu ermitteln, die für die lokale SQL Server-Instanz konfiguriert sind. Es wird auch vom CDC-Dienst verwendet, um sicherzustellen, dass nur ein ausgeführter Windows-Dienst einen bestimmten Oracle CDC-Dienstnamen verarbeitet.

Im Folgenden werden die Aufnahmestatuselemente beschrieben, die in der dbo.xdbcdc_databases Tabelle enthalten sind.

Element BESCHREIBUNG
CDC-Dienstname Der Name des Oracle CDC-Diensts (der Windows-Dienstname).
cdc_service_sql_login Der Name der SQL Server-Anmeldung, die vom Oracle CDC Service zum Herstellen einer Verbindung mit der SQL Server-Instanz verwendet wird. Ein neuer SQL-Benutzer mit dem Namen cdc_service wird erstellt und diesem Anmeldenamen zugeordnet und anschließend als Mitglied der db_ddladmin, db_datareader und db_datawriter festen Datenbankrollen für jede CDC-Datenbank hinzugefügt, die vom Dienst behandelt wird.
ref_count Dieses Element zählt die Anzahl der Computer, auf denen derselbe Oracle CDC Service installiert ist. Es wird mit jeder Hinzufügung des gleichnamigen Oracle CDC Service inkrementiert. Es wird entsprechend dekrementiert, wenn ein Dienst entfernt wird. Wenn der Zähler null erreicht, wird diese Zeile gelöscht.
active_service_node Der Name des Windows-Knotens, der den CDC-Dienst momentan behandelt. Wenn der Dienst ordnungsgemäß beendet wird, wird diese Spalte auf NULL festgelegt, was angibt, dass kein aktiver Dienst mehr vorhanden ist.
active_service_heartbeat Dieses Element verfolgt den aktuellen CDC-Dienst nach, um festzustellen, ob er noch aktiv ist.

Dieses Element wird in regelmäßigen Abständen mit dem aktuellen UTC-Zeitstempel der Datenbank für den aktiven CDC-Dienst aktualisiert. Das Standardintervall beträgt 30 Sekunden, das Intervall kann jedoch konfiguriert werden.

Wenn ein ausstehender CDC-Dienst erkennt, dass der Takt nicht aktualisiert wurde, nachdem das konfigurierte Intervall verstrichen ist, versucht der ausstehende Dienst, die aktive CDC-Dienst-Rolle zu übernehmen.
Optionen Dieses Element gibt die sekundären Optionen an, z. B. Ablaufverfolgung oder Optimierung. Sie wird in Form von name[=value][; ]geschrieben. Die Optionszeichenfolge verwendet dieselbe Semantik wie die ODBC-Verbindungszeichenfolge. Wenn die Option boolescher Wert ist (mit dem Wert "ja/nein"), kann der Wert nur den Namen enthalten.

Die Ablaufverfolgung (trace) hat die folgenden möglichen Werte.

STIMMT

auf

FALSCH

aus

<Klassenname>[,Klassenname>]



Der Standardwert ist false.

service_heartbeat_interval ist das Zeitintervall (in Sekunden), in dem der Dienst die Spalte active_service_heartbeat aktualisiert. Der Standardwert ist 30. Der Maximalwert ist 3600.

service_config_polling_interval ist das Abrufintervall (in Sekunden) für den CDC-Dienst, um nach Konfigurationsänderungen zu suchen. Der Standardwert ist 30. Der Maximalwert ist 3600.

sql_command_timeout ist das Befehlstimeout, das mit SQL Server funktioniert. Der Standardwert ist 1. Der Maximalwert ist 3600.

Gespeicherte MSXDBCDC-Datenbankprozeduren

In diesem Abschnitt werden die folgenden gespeicherten Prozeduren in der MSXDBCDC-Datenbank beschrieben.

dbo.xcbcdc_reset_db(Datenbankname)

Dieses Verfahren löscht die Daten einer Oracle CDC-Instanz. Es wird verwendet:

  • Zum Neustarten der Aufzeichnung von Daten ohne Berücksichtigung der vorherigen Daten, z. B. nach der Wiederherstellung einer Quelldatenbank oder nach einem Zeitraum der Inaktivität, in dem einige Oracle-Transaktionsprotokolle nicht verfügbar sind.

  • Bei einer Beschädigung im CDC-Status (vor allem in den cdc.*tables-Daten).

Die dbo.xcbcdc_reset_db-Prozedur führt die folgenden Aufgaben aus:

  • Beendet die CDC-Instanz (sofern aktiv).

  • Schneidet die Änderungstabellen, die Tabelle cdc_lsn_mapping und die Tabelle cdc_ddl_history ab.

  • Löscht die cdc_xdbcdc_state Tabelle.

  • Löscht die Spalte start_lsn für jede Zeile der cdc_change_table.

Um die dbo.xcbcdc_reset_db-Prozedur zu verwenden, muss der Benutzer Mitglied der Datenbankrolle db_owner für die benannte CDC-Instanzdatenbank sein oder Mitglied der festen Serverrollen sysadmin oder serveradmin sein.

Weitere Informationen zu den CDC-Tabellen finden Sie in den CDC-Datenbanken im Hilfesystem in der CDC Designer Console.

dbo.xdbcdc_disable_db(dbname)

Die dbo.xcbcdc_disable_db Prozedur führt die folgende Aufgabe aus:

  • Entfernt den Eintrag für die ausgewählte CDC-Datenbank in der MSXDBCDC.xdbcdc_databases Tabelle.

Um die dbo.xcbcdc_disable_db-Prozedur zu verwenden, muss der Benutzer Mitglied der db_owner-Datenbankrolle sein, damit die CDC-Instanz benannt wird oder ein Mitglied der festen Serverrolle"sysadmin" oder "serveradmin" ist.

Weitere Informationen zu den CDC-Tabellen finden Sie in den CDC-Datenbanken im Hilfesystem in der CDC Designer Console.

dbo.xcbcdc_add_service(svcname,sqlusr)

Die dbo.xcbcdc_add_service Prozedur fügt der MSXDBCDC.xdbcdc_services Tabelle einen Eintrag hinzu und fügt der ref_count Spalte für den Dienstnamen in der MSXDBCDC.xdbcdc_services Tabelle eine Inkrementierung hinzu. Wenn die ref_count 0 ist, wird die Zeile gelöscht.

Zum Verwenden der Prozedur dbo.xcbcdc_add_service<Dienstname, Benutzername> müssen die Benutzer*innen Mitglied der Datenbankrolle db_owner für die genannte CDC-Instanzdatenbank oder Mitglied der festen Serverrollen sysadmin oder serveradmin sein.

dbo.xdbcdc_start(dbname)

Die dbo.xdbcdc_start-Prozedur sendet eine Startanforderung an den CDC-Dienst, der die ausgewählte CDC-Instanz verarbeitet, um die Änderungsverarbeitung zu starten.

Um die dbo.xcdcdc_start-Prozedur zu verwenden, muss der Benutzer Mitglied der db_owner Datenbankrolle für die CDC-Datenbank sein oder Mitglied der Rollen "sysadmin " oder " serveradmin " für die SQL Server-Instanz sein.

dbo.xdbcdc_stop(dbname)

Die dbo.xdbcdc_stop-Prozedur sendet eine Stoppanforderung an den CDC-Dienst, der die ausgewählte CDC-Instanz verarbeitet, um die Änderungsverarbeitung zu beenden.

Um die dbo.xcdcdc_stop-Prozedur zu verwenden, muss der Benutzer Mitglied der db_owner Datenbankrolle für die CDC-Datenbank sein oder Mitglied der Rollen "sysadmin " oder " serveradmin " für die SQL Server-Instanz sein.

Die CDC-Datenbanken

Jede Oracle CDC-Instanz, die in einem CDC-Dienst verwendet wird, ist einer bestimmten SQL Server-Datenbank zugeordnet, die als CDC-Datenbank bezeichnet wird. Diese SQL Server-Datenbank wird in der SQL Server-Instanz gehostet, die dem Oracle CDC Service zugeordnet ist.

Die CDC-Datenbank enthält ein spezielles CDC-Schema. Der Oracle CDC Service verwendet dieses Schema mit Tabellennamen mit dem Präfix xdbcdc_. Dieses Schema wird für Sicherheits- und Konsistenzzwecke verwendet.

Sowohl die Oracle CDC-Instanz als auch die CDC-Datenbanken werden mit der Oracle CDC Designer Console erstellt. Weitere Informationen zu den CDC-Datenbanken finden Sie in der Dokumentation zur Installation der Oracle CDC Designer Console.

Verwenden der Befehlszeile zum Konfigurieren des CDC-Diensts

Sie können das Oracle CDC Service-Programm (xdbcdcsvc.exe) über die Befehlszeile bedienen. Das CDC-Dienstprogramm ist eine systemeigene ausführbare 32-Bit-/64-Bit-Windows-Datei.

Siehe auch

Verwendung der Befehlszeilenschnittstelle des CDC-Dienstes

Dienstprogrammbefehle

Im Abschnitt werden die folgenden Befehle beschrieben, die zum Konfigurieren des CDC-Diensts verwendet werden.

Konfiguration

Verwenden Sie Config, um eine Oracle CDC Service-Konfiguration aus einem Skript zu aktualisieren. Der Befehl kann verwendet werden, um nur bestimmte Teile der CDC-Dienstkonfiguration zu aktualisieren (z. B. nur die Verbindungszeichenfolge, ohne das asymmetrische Schlüsselkennwort zu kennen). Der Befehl muss von einem Computeradministrator ausgeführt werden. Im Folgenden sehen Sie ein Beispiel für den Config Befehl.

"<path>xdbcdcsvc.exe" config  
     <cdc-service-name>  
     [connect= <sql-server-connection-string>]  
     [key= <asym-key-password>]  
     [svcacct= <windows-account> <windows-password>]  
     [sqlacct= <sql-username> <sql-password>]  
  

Ort:

cdc-service-name ist der Name des CDC-Diensts, der aktualisiert werden soll. Dies ist ein erforderlicher Parameter.

sql-server-connection-string ist die verbindungszeichenfolge, die aktualisiert werden soll. Wenn die Verbindungszeichenfolge Leerzeichen oder Anführungszeichen enthält, muss sie in doppelte Anführungszeichen (") eingeschlossen werden. Eingebettete Anführungszeichen werden mit Escapezeichen versehen, indem die Anführungszeichen verdoppelt werden.

asym-key-password ist das Kennwort, das aktualisiert werden soll.

Windows-Konto, Windows-Kennwort sind die Windows-Kontoanmeldeinformationen für den Dienst, der aktualisiert wird.

SQL-Benutzername, SQL-Kennwort sind die SQL Server-Authentifizierungsanmeldeinformationen, die aktualisiert werden. Wenn sqlacct sowohl über einen leeren Benutzernamen als auch über ein leeres Kennwort verfügt, stellt der Oracle CDC-Dienst mithilfe der Windows-Authentifizierung eine Verbindung mit SQL Server bereit.

Hinweis: Jeder Parameter, der Leerzeichen oder doppelte Anführungszeichen enthält, muss mit doppelten Anführungszeichen (") umschlossen werden. Eingebettete doppelte Anführungszeichen müssen verdoppelt werden, zum Beispiel beim Eingeben des Kennworts "A#B" D verwenden Sie ""A#B"" D".

Erstellen

Verwenden Sie Create, um einen Oracle CDC-Dienst aus einem Skript zu erstellen. Der Befehl muss von einem Computeradministrator ausgeführt werden. Im Folgenden sehen Sie ein Beispiel für den Create Befehl:

"<path>xdbcdcsvc.exe" create  
     <cdc-service-name>  
     [connect= "<sql-server-connection-string>"]  
     [key= <asym-key-password>]  
     [svcacct <windows-account> <windows-password>]  
     [sqlacct <sql-username> <sql-password>]  

Ort:

cdc-service-name ist der Name des neu erstellten Diensts. Wenn bereits ein Dienst mit diesem Namen vorhanden ist, gibt das Programm einen Fehler zurück. Sie sollten keine langen Namen oder Namen mit Leerzeichen verwenden. Die Zeichen "/" und "\" sind ungültige Zeichen in einem Dienstnamen. Dies ist ein erforderlicher Parameter.

sql-server-connection-string ist die Verbindungszeichenfolge, die zum Herstellen einer Verbindung mit der SQL Server-Instanz verwendet werden soll, die dem neuen Oracle CDC Service zugeordnet ist.

asym-key-password ist das Kennwort, das den asymmetrischen Schlüssel schützt, der für die Speicherung der Anmeldeinformationen für die Protokollanalyse der Quelldatenbank verwendet wird.

windows-account und windows-password sind der Kontoname und das Passwort, die mit dem zu erstellenden Oracle CDC-Dienst verbunden sind.

SQL-Benutzername, SQL-Kennwort sind der Name und das Kennwort des SQL Server-Kontos, das zum Herstellen einer Verbindung mit der SQL Server-Instanz verwendet wird. Wenn beide Parameter leer sind, stellt der CDC-Dienst für Oracle eine Verbindung mit SQL Server mithilfe der Windows-Authentifizierung bereit.

Hinweis: Jeder Parameter, der Leerzeichen oder doppelte Anführungszeichen enthält, muss mit doppelten Anführungszeichen (") umschlossen werden. Eingebettete doppelte Anführungszeichen müssen verdoppelt werden (z. B. um "A#B" D als Kennwort einzugeben ""A#B"" D").

Löschen

Verwenden Sie Delete, um den Oracle CDC-Dienst sauber aus einem Skript zu löschen. Dieser Befehl muss von einem Computeradministrator ausgeführt werden. Im Folgenden sehen Sie ein Beispiel für den Delete Befehl.

"<path>xdbcdcsvc.exe" delete  
    <cdc-service-name>  
  

Ort:

cdc-service-name ist der Name des CDC-Dienstes, der gelöscht werden soll.

Hinweis: Jeder Parameter, der Leerzeichen oder doppelte Anführungszeichen enthält, muss mit doppelten Anführungszeichen (") umschlossen werden. Eingebettete doppelte Anführungszeichen müssen verdoppelt werden, zum Beispiel beim Eingeben des Kennworts "A#B" D verwenden Sie ""A#B"" D".

Siehe auch

Verwenden der CDC-Service-Befehlszeilenschnittstelle
Vorbereiten von SQL Server für CDC