Replizieren von Oracle Daten
Sie können Daten von Oracle mit Data Replication replizieren.
Um die Replikation für Daten aus „ Oracle “ einzurichten, konfigurieren Sie Ihre Datenbank „ Oracle “ als Quelle und erstellen Sie anschließend eine Verbindung.
Unterstützte Versionen
Oracle 19c R1 (19.1)+
Einschränkung
Sie können nur einige Oracle Datentypen replizieren. Siehe Unterstützte Datentypen Oracle.
Konfigurieren von Oracle als Quelle
Bevor Sie eine Replikation mit einer Oracle -Verbindung starten, müssen Sie sicherstellen, dass die Anforderungen an Datenbank, Benutzerkonten und Schema erfüllt sind.
Konfigurieren Sie eine Oracle Datenbank. Wenn Sie eine Oracle Verbindung konfigurieren, werden Sie aufgefordert, den Namen der Oracle Datenbank einzugeben, aus der Data Replication Daten replizieren soll. Bevor Sie die Verbindung herstellen, stellen Sie sicher, dass diese Datenbank Oracle existiert und dass Sie einen Datenbankbenutzer erstellen und einrichten, der Zugriff auf diese Datenbank hat. Data Replication unterstützt Mapping-Tabellen, die sich in mehreren Schemata innerhalb derselben Datenbank befinden. Stellen Sie sicher, dass Oracle XStream über den Parameter
enable_goldengate_replicationaktiviert ist.Ein Teil der Oracle XStream-Konfiguration muss im Voraus vorbereitet werden, bevor Sie eine Oracle Verbindung erstellen.
Aktivieren Sie
enable_goldengate_replication. Sie müssen den Systemparameterenable_goldengate_replicationin Ihrer Quelldatenbank setzen, um die XStream-Replikationsfunktion in Oracle zu aktivieren. Sie könnten die folgende Aussage verwenden:ALTER SYSTEM SET enable_goldengate_replication=TRUE SCOPE=BOTHAlle Instanzen in Oracle RAC müssen die gleiche Einstellung haben. Lesen Sie die Dokumentation Oracle, um zu verstehen, wie sich die Aktivierung dieses Parameters auf Ihre Datenbank auswirkt.
Erstellen Sie ein Benutzerkonto für die Oracle-Datenbank.
Wenn Sie Daten aus Oracle Datenbanken replizieren, verarbeitet Data Replication die Datenbankprotokolle. Sie können Data Replication für eine lokale Erfassung konfigurieren, bei der die Protokolle in derselben Datenbank verarbeitet werden wie die Schemata, die Sie replizieren. Alternativ können Sie Data Replication so konfigurieren, dass eine separate Oracle XStream-Verbindung zur Verarbeitung von Protokollen in einer anderen Datenbank verwendet wird. Wenn Sie die lokale Erfassung verwenden, benötigen Sie eine einzelne Oracle Verbindung. Wenn Sie eine separate Oracle XStream-Datenbank für die Protokollverarbeitung verwenden, benötigen Sie zwei Oracle -Verbindungen: eine für die Verbindung mit der Datenbank, die das zu replizierende Schema enthält, und eine für die Verbindung mit der Datenbank, in der Oracle XStream die Protokolle verarbeitet. Diese Protokollverarbeitungsdatenbank kann eine Oracle nachgeschaltete Datenbank sein.
Überprüfen Sie die erforderlichen Berechtigungen für Oracle Benutzer. Bevor Sie Oracle Verbindungen konfigurieren, sollten Sie sich die Liste der Berechtigungen ansehen, die für Oracle Benutzer erforderlich sind. Sie müssen den Benutzern diese Berechtigungen gewähren, indem Sie SQL-Skripts ausführen.
Mit den folgenden Beispielskripten können Sie dem Datenbankbenutzer Oracle und dem Benutzer der Protokollverarbeitungsdatenbank die entsprechenden Berechtigungen zuweisen.
Beispiel-Skript createuser-ora-nodba.sql
Kopieren Sie dieses Skript, und ersetzen Sie die Werte in den spitzen Klammern. Führen Sie dieses Skript aus, um einen Oracle Datenbankbenutzer für die Replikation von Daten von Oracle zu erstellen.
/* _______________________________________________________ {COPYRIGHT-TOP} _____
** Licensed Materials - Property of IBM
** IBM Data Replication Cartridge for IBM Cloud Pak for Data
** 5900ASF
**
** (c) Copyright IBM Corp. 2001, 2022 All rights reserved.
**
** The following sample of source code ("Sample") is owned by International
** Business Machines Corporation or one of its subsidiaries ("IBM") and is
** copyrighted and licensed, not sold. You may use, copy, modify, and
** distribute the Sample in any form without payment to IBM.
**
** The Sample code is provided to you on an "AS IS" basis, without warranty of
** any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR
** IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do
** not allow for the exclusion or limitation of implied warranties, so the above
** limitations or exclusions may not apply to you. IBM shall not be liable for
** any damages you suffer as a result of using, copying, modifying or
** distributing the Sample, even if IBM has been advised of the possibility of
** such damages.
* ________________________________________________________ {COPYRIGHT-END} _____*/
--This script does not grant dba to the data replication user.
-- create user
CREATE user <user> identified by <password>
default tablespace <tablespace_name> temporary tablespace <temporary_tablespace_name>;
-- Grant basic roles
grant connect to <user>;
grant resource to <user>;
grant select_catalog_role to <user>;
grant unlimited tablespace to <user>;
-- Table DDL permissions
grant create any table to <user>;
grant alter any table to <user>;
grant drop any table to <user>;
grant lock any table to <user>;
-- Table DML permissions
grant select any table to <user>;
grant flashback any table to <user>;
grant insert any table to <user>;
grant update any table to <user>;
grant delete any table to <user>;
-- Index and view DDL permissions
grant create any index to <user>;
grant alter any index to <user>;
grant drop any index to <user>;
grant create any view to <user>;
grant drop any view to <user>;
-- Sequence and trigger DDL permissions
grant create any sequence to <user>;
grant create any trigger to <user>;
-- Procedure permissions
grant create any procedure to <user>;
grant execute any procedure to <user>;
-- Permission to perform select on the v_$ tables
grant select any dictionary to <user>;
-- General system views
grant select on sys.v_$database to <user>;
grant select on sys.v_$controlfile to <user>;
grant select on sys.v_$version to <user>;
grant select on sys.nls_database_parameters to <user>;
-- Archive and redo logs
grant select on sys.v_$log to <user>;
grant select on sys.v_$logfile to <user>;
grant select on sys.v_$archived_log to <user>;
grant select on sys.v_$log_history to <user>;
-- Sessions and transactions
grant alter session to <user>;
grant select on sys.v_$session to <user>;
grant select on sys.gv_$session to <user>;
grant select on sys.v_$transaction to <user>;
grant select on sys.v_$mystat to <user>;
-- Tables, indexes, columns and related views
grant select on sys.all_coll_types to <user>;
grant select on sys.all_type_attrs to <user>;
grant select on sys.dba_tables to <user>;
grant select on sys.dba_tab_comments to <user>;
grant select on sys.dba_tab_columns to <user>;
grant select on sys.dba_col_comments to <user>;
grant select on sys.dba_indexes to <user>;
grant select on sys.dba_ind_columns to <user>;
grant select on sys.all_constraints to <user>;
grant select on sys.dba_constraints to <user>;
grant select on sys.all_cons_columns to <user>;
grant select on sys.dba_cons_columns to <user>;
grant select on sys.tab$ to <user>;
grant select on sys.ind$ to <user>;
grant select on sys.lob$ to <user>;
grant select on sys.col$ to <user>;
grant select on sys.icol$ to <user>;
grant select on sys.coltype$ to <user>;
grant select on sys.attrcol$ to <user>;
grant select on sys.ccol$ to <user>;
grant select on sys.cdef$ to <user>;
-- Miscellaneous other objects
grant select on sys.obj$ to <user>;
grant select on sys.dba_mviews to <user>;
grant select on sys.dba_objects to <user>;
grant select on sys.dba_sequences to <user>;
grant select on sys.hist_head$ to <user>;
grant select on sys.resource_cost to <user>;
-- Storage
grant select on sys.dba_tablespaces to <user>;
grant select on sys.dba_rollback_segs to <user>;
-- Permissions
grant select on sys.dba_users to <user>;
grant select on sys.dba_sys_privs to <user>;
grant select on sys.dba_tab_privs to <user>;
grant select on sys.dba_profiles to <user>;
grant select on sys.dba_roles to <user>;
grant select on sys.user$ to <user>;
grant select on user_role_privs to <user>;
exit;
Beispiel-Skript createuser-ora-xstream.sql
Kopieren Sie dieses Skript und ersetzen Sie die Werte in den spitzen Klammern. Führen Sie das Beispielskript createuser-ora-nodba.sql aus, bevor Sie createuser-ora-xstream.sql ausführen. Wenn Sie Data Replication so konfigurieren, dass eine lokale Erfassung verwendet wird, bei der die Protokolle in derselben Datenbank verarbeitet werden wie die Schemata, die Sie replizieren, führen Sie createuser-ora-nodba.sql und createuser-ora-xstream.sql gegen dieselbe Datenbank aus und verwenden Sie denselben Wert für <user>. Wenn Sie es vorziehen, die Oracle XStream-Prozessprotokolle in einer von den zu replizierenden Schemata getrennten Datenbank zu speichern, können Sie optional einen anderen Benutzer angeben und das Skript gegen die Datenbank ausführen.
/* _______________________________________________________ {COPYRIGHT-TOP} _____
** Licensed Materials - Property of IBM
** IBM Data Replication Cartridge for IBM Cloud Pak for Data
** 5900ASF
**
** (c) Copyright IBM Corp. 2001, 2022 All rights reserved.
**
** The following sample of source code ("Sample") is owned by International
** Business Machines Corporation or one of its subsidiaries ("IBM") and is
** copyrighted and licensed, not sold. You may use, copy, modify, and
** distribute the Sample in any form without payment to IBM.
**
** The Sample code is provided to you on an "AS IS" basis, without warranty of
** any kind. IBM HEREBY EXPRESSLY DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR
** IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
** MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Some jurisdictions do
** not allow for the exclusion or limitation of implied warranties, so the above
** limitations or exclusions may not apply to you. IBM shall not be liable for
** any damages you suffer as a result of using, copying, modifying or
** distributing the Sample, even if IBM has been advised of the possibility of
** such damages.
* ________________________________________________________ {COPYRIGHT-END} _____*/
-- This script is a continuation of createuser-ora-nodba.sql script with
-- additional changes needed for data replication user as well as XStream Log
-- Processing Database user. Process all needed privileges from the script
-- createuser-ora-nodba.sql prior to continuing with this script.
-- XStream privileges on data replication User
-- Expected to be used for DBMS_CAPTURE_ADM.BUILD
-- to define XStream Capture initialization points
grant execute on DBMS_CAPTURE_ADM to <user>;
-- Optional privilege that is expected to be used on
-- the target engine required for Recursion Prevention
-- in Bidirectional replication.
grant execute on DBMS_XSTREAM_ADM to <user>;
-- Enable enable_goldengate_replication
-- You need to set the enable_goldengate_replication system parameter on your source
-- database to enable XStream replication capability in Oracle.
ALTER SYSTEM SET enable_goldengate_replication=TRUE SCOPE=BOTH;
-- to enable the enable_goldengate_replication system parameter.
-- All instances in Oracle RAC must have the same setting. Refer to Oracle documentation
-- for further understanding on the impact of enabling this parameter on your database.
-- Setting up Oracle XStream user account.
-- Most work in data replication is done using the Oracle user account.
-- When data replication needs to interact with Oracle XStream it will use the Oracle XStream account.
-- An Oracle XStream account needs sufficient privileges to comply with Oracle XStream user requirements.
-- In a Pluggable database environment, the Oracle user account has all the granted access to the
-- Pluggable database when replication is configured for a pluggable database, whereas the XStream
-- user account has to be defined in the root container database as per Oracle XStream requirements.
-- All Oracle XStream related objects are defined and managed in the container database in this case.
CALL DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => <Log Processing Database User>,
privilege_type => 'CAPTURE');
exit;
Konfigurieren Sie die Datenbank für die Protokollverarbeitung. Wenn Sie ein Asset Data Replication erstellen, werden Sie aufgefordert, den Namen der Oracle Protokollverarbeitungsdatenbank einzugeben, die Sie für Data Replication verwenden möchten. Diese Datenbank dient einer XStream-Ausgangsdatenbank, zu der Data Replication eine Verbindung herstellt und an die sie angehängt wird, um die von der Oracle XStream-API gelieferten logischen Änderungssätze zu verarbeiten. Für die lokale Oracle XStream-Erfassung und den Outbound-Server ist dies dieselbe Datenbank wie zuvor. Bei steckbaren Datenbanken ist die Protokollverarbeitungsdatenbank die Stammdatenbank des Containers. Für die nachgelagerte Erfassung ist die Protokollverarbeitungsdatenbank die nachgelagerte Datenbank. Die Protokollverarbeitungsdatenbank erfordert auch enable_goldengate_replication.
Optional: Konfigurieren Sie eine nachgeschaltete Datenbank zur Protokollverarbeitung. Zur Konfiguration der nachgelagerten Erfassung in Echtzeit oder der nachgelagerten Erfassung in Form eines Archivierungsprotokolls ist eine Reihe von Schritten erforderlich. Lesen Sie die Dokumentation zu „ Oracle XStream“, um Datenbankverknüpfungen und die Übertragung von Protokolldateien zu konfigurieren.
Nachdem Sie die Echtzeit-Downstream-Erfassung eingerichtet haben, führen Sie beim ersten Start der Spiegelung die folgende SQL-Anweisung aus, um die Echtzeit-Downstream-Erfassung zu aktivieren:
ALTER SYSTEM ARCHIVE LOG CURRENTRichten Sie ein Oracle XStream-Benutzerkonto ein. Die meisten Arbeiten in Data Replication werden mit dem Benutzerkonto Oracle durchgeführt. Wenn Data Replication mit Oracle XStream interagieren muss, verwendet es das Konto Oracle XStream. Ein Oracle XStream-Konto muss über ausreichende Berechtigungen verfügen, um die Oracle XStream-Benutzeranforderungen zu erfüllen. In einer Umgebung mit steckbaren Datenbanken hat das Benutzerkonto Oracle den gesamten gewährten Zugriff auf die steckbare Datenbank, wenn die Replikation für eine steckbare Datenbank konfiguriert ist. Das XStream-Benutzerkonto muss jedoch in der Root-Container-Datenbank gemäß den Anforderungen von Oracle XStream definiert werden. Alle Oracle XStream-bezogenen Komponenten werden in diesem Fall in der Root-Container-Datenbank definiert und verwaltet. Sie können DBMS_XSTREAM_AUTH.GRANT_ADMIN_PRIVILEGE verwenden, um XStream-Benutzerkonten Berechtigungen zu erteilen. Oracle Bei den Anmeldeinformationen für die ausgehende XStream-Datenbank wird zwischen Groß- und Kleinschreibung unterschieden. Weitere Informationen finden Sie in der Dokumentation Oracle.
Erstellen Sie ein Schema oder wählen Sie ein bereits vorhandenes Schema für die Metadatentabellen Ihrer Datenbank aus. Sie müssen dieses Schema angeben, wenn Sie Data Replication konfigurieren.
Verbinden mit Oracle in einem Projekt
Für Anmeldeinformationen und Zertifikate können Sie Geheimnisse verwenden, wenn ein Tresor für die Plattform konfiguriert ist und der Dienst Tresore unterstützt. Informationen finden Sie unter Verwendung von Geheimnissen aus Tresoren in Verbindungen.
Um eine Verbindung zu Oracle in einem Projekt herzustellen, siehe Oracle connection.
Erstellen eines Replikations-Assets mit Oracle
So erstellen Sie ein Data Replication Asset:
Klicken Sie im Projekt auf die Registerkarte Assets.
Klicken Sie auf Neues Asset > Daten replizieren.
Geben Sie einen Namen ein.
Klicken Sie auf Verbindungen.
Wählen Sie auf der Seite Quellenoptionen Oracle aus der Liste der Verbindungen oder klicken Sie auf Verbindung hinzufügen, um eine neue Verbindung zu erstellen.
Oracle verbindungen erfordern zusätzliche Parameter wie folgt:
Wählen Sie Lokale Erfassung, um die Protokolle in derselben Datenbank wie die Quellverbindung zu verarbeiten.
Wählen Sie eine separate Oracle XStream-Verbindung zur Verarbeitung von Protokollen in einer separaten Datenbank.
- Wenn Sie Echtzeit-Downstream-Capture wählen, wird eine separate Oracle XStream-Verbindung zur Verarbeitung von Protokollen in einer anderen Datenbank verwendet.
- Wenn Sie keine Echtzeit-Downstream-Erfassung auswählen, können Sie steckbare Datenbanken (PDBs) oder mandantenfähige Container-Datenbanken (CDBs) und archivierte Protokoll-Downstream-Erfassung verwenden.
Legen Sie das Replikations-Heartbeat-Intervall fest, um zu steuern, wie oft der Replikationsjob Heartbeat-Datensätze an die Oracle XStream-Verbindung sendet. Eine Herzschlagaufzeichnung ist eine spezielle Zeile, die regelmäßig in eine Tabelle geschrieben wird, um die Verbindung zur Oracle Datenbank aufrechtzuerhalten. Sie können das Replikations-Heartbeat-Intervall auf einen Wert zwischen 5 und 60 Minuten einstellen.
Legen Sie den Schwellenwert für die Inaktivität des Replikationsberichts fest, um zu steuern, wie lange der Replikationsauftrag auf den Empfang von Daten aus der Oracle XStream-Verbindung wartet. Wenn innerhalb des Schwellenwerts für die Nichtaktivität keine Daten oder Heartbeat-Datensätze empfangen werden, weist der Replikationsauftrag Sie darauf hin, dass keine Daten erfasst werden. Sie können den Schwellenwert für die Inaktivität des Replikationsberichts auf einen Wert zwischen 6 Minuten und 61 Minuten festlegen.
Wichtig:Der Schwellenwert für den Replikationsbericht muss 60 Sekunden größer sein als das Replikations-Heartbeat-Intervall, um zu verhindern, dass der Replikationsauftrag Sie vorzeitig darüber informiert, dass keine Daten von der Oracle XStream-Verbindung empfangen wurden.
Klicken Sie auf Daten auswählen, wählen Sie ein Schema und optional eine Tabelle aus dem Schema.
Wählen Sie auf der Seite Zieloptionen eine Zielverbindung aus der Liste aus, oder klicken Sie auf Verbindung hinzufügen, um eine neue Verbindung zu erstellen.
Optional : Legen Sie die folgenden Parameter fest, um zu konfigurieren, wie große Objekttypen während des Replikationsprozesses behandelt werden:
Hinweis:Die Parameter für die Behandlung von Large Object-Datentypen sind nur verfügbar, wenn Sie Oracle als Quelldatenbank und watsonx.data als Zieldatenbank verwenden.
- Option zur Handhabung von nicht unterstützten Spaltentypen
- Wählen Sie, wie die Replikation von Tabellen behandelt werden soll, die Spalten mit nicht unterstützten Datentypen enthalten.
- Option zur Handhabung von BLOBs
- Konfigurieren Sie, wie ein übergroßes binäres großes Objekt (BLOB) repliziert wird.
- Option zur Handhabung von CLOBs
- Konfigurieren Sie, wie ein Oversize Character Large Object (CLOB) repliziert wird.
- Option zur Handhabung von XML
- Konfigurieren Sie, wie XML-Spalten repliziert werden.
Überprüfen Sie auf der Seite Überprüfung die Zusammenfassung und klicken Sie dann auf Erstellen.
Fehlerbehebung
Wenn Sie mit der Replikation von Daten aus einer Oracle -Datenbank beginnen, kann es vorkommen, dass der integrierte Erfassungsprozess nicht genügend Speicher aus dem Stream-Pool der Datenbank zuweisen kann, um eingehende Änderungsdaten zwischenzuspeichern, was dazu führt, dass der Erfassungsstatus im Ereignisprotokoll als Waiting For Memory angezeigt wird.
So stellen Sie den Serverspeicher wieder her und beheben das Problem:
Den Replikationsauftrag anhalten.
Beenden Sie den integrierten Erfassungsprozess der Datenbank:
DBMS_CAPTURE_ADM.STOP_CAPTURE(<capture_name>);Beenden Sie den ausgehenden Server:
DBMS_XSTREAM_ADM.STOP_OUTBOUND(<server_name>);Den Replikationsjob fortsetzen.
Wenn der Erfassungsstatus weiterhin anzeigt Waiting For Memory, erhöhen Sie den Erfassungsspeicher, indem Sie den STREAMS_POOL_SIZE Datenbankparameter „ Oracle “ ändern.