Daten mit DBMS_CLOUD_IMPORT migrieren

Mit DBMS_CLOUD_IMPORT können Sie Daten aus Oracle- und Nicht-Oracle-Datenbanken mit einem einfachen, konsistenten Ansatz in Oracle Autonomous AI Database importieren.

Daten mit DBMS_CLOUD_IMPORT migrieren

Bei der Arbeit über mehrere Datenbanksysteme hinweg kann die Datenverschiebung aufgrund von Unterschieden in Technologien, Formaten und Tools komplex sein. DBMS_CLOUD_IMPORT vereinfacht diesen Prozess, indem ein einheitlicher Ansatz für den plattformübergreifenden Datenimport bereitgestellt wird, sodass nicht mehrere Tools oder Workflows verwaltet werden müssen.

DBMS_CLOUD_IMPORT unterstützt auch eine leistungsstarke und zuverlässige Datenübertragung. Der Importprozess verwendet die parallele Ausführung, um den Durchsatz zu verbessern. Wenn ein Import unterbrochen wird, z.B. während der Wartung oder bei einem Verbindungsverlust zur Quelldatenbank, wird er automatisch von dort fortgesetzt, wo er unterbrochen wurde. So wird der Abschluss sichergestellt, ohne dass der Import erneut gestartet werden muss.

Sie können Daten aus allen Oracle-Datenbanken importieren, die in OCI oder anderen Cloud-Providern wie Amazon RDS for Oracle ausgeführt werden, sowie aus allen nicht von Oracle unterstützten Datenbanken, die von Oracle Managed Heterogeneous Connectivity unterstützt werden. Bei Oracle-Quellen werden sowohl Daten als auch Datenbankobjekte importiert. Bei Nicht-Oracle-Quellen konzentriert sich der Import auf die Datenverschiebung mit automatischer Datentypkonvertierung in Oracle-kompatible Formate.

Diese Funktion unterstützt den flexiblen Datenimport. Je nach Ihren Anforderungen können Sie eine gesamte Datenbank oder eine Teilmenge von Daten, wie ausgewählte Schemas oder Tabellen, importieren. Oracle stellt außerdem Data Dictionary Views bereit, um den Fortschritt zu überwachen und den Importstatus zu verfolgen.

Wichtige Vorteile

  • Einheitlicher Datenimport plattformübergreifend: Importieren Sie Daten aus Oracle- und Nicht-Oracle-Datenbanken, ohne mehrere Tools zu verwenden.
  • Leistungsstarke Datenübertragung: Verschieben Sie große Datenmengen mit paralleler Ausführung.
  • Integrierte Resilienz: Setzen Sie Importvorgänge automatisch nach Unterbrechungen fort, einschließlich Wartung oder Verbindungsausfall mit der Quelldatenbank.
  • Flexible Datenauswahl: Importieren Sie eine vollständige Datenbank oder eine Teilmenge von Daten, einschließlich bestimmter Schemas oder Tabellen.

In den folgenden Themen finden Sie weitere Informationen:

Voraussetzungen

Listet die Voraussetzungen für den Import in die autonome KI-Datenbank auf.

Stellen Sie vor dem Start des Imports sicher, dass die folgenden Voraussetzungen erfüllt sind.

  • Sie müssen als Benutzer ADMIN angemeldet sein.

  • DBMS_CLOUD_IMPORT-Unterprogramme greifen mit einem Datenbanklink, der implizit als Teil der Importaufgabe erstellt wurde, auf die Quelldatenbank zu. Um diese Verbindung herzustellen, müssen Sie ein Zugangsdatenobjekt mit den Zugangsdaten der Remotedatenbank erstellen und beim Erstellen der Importaufgabe referenzieren. Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  • Geben Sie für Nicht-Oracle-Quelldatenbanken longtovarchar => 'true' im Parameter gateway_params an, wenn Sie DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK aufrufen. Dies ist erforderlich, da Metadaten in Nicht-Oracle-Datenbanken aus LONG-Spalten bestehen. Beispiel: gateway_params => JSON_OBJECT('db_type' VALUE <db_type>, 'longtovarchar' VALUE 'true').

  • Stellen Sie sicher, dass die von service_name angegebene Datenbank eine Verbindung zum Zielschema herstellen und darauf zugreifen kann.

  • Importjobs werden ab dem Zeitpunkt der Unterbrechung fortgesetzt, z.B. nach einem geplanten Wartungsereignis oder einem unerwarteten Ausfall.

In diesem Fall wird die parallele Verarbeitung nicht unterstützt, und wenn der Job unterbrochen wird, wird er vom Anfang der Tabelle neu gestartet, anstatt ab dem Zeitpunkt der Unterbrechung wiederaufzunehmen.

Je nach Quelldatenbanktyp können zusätzliche Voraussetzungen erforderlich sein, um die parallele Verarbeitung und zuverlässige Neustartfähigkeit zu unterstützen.

Parallele Verarbeitung und automatische Wiederaufnahme werden derzeit für Oracle-, MySQL-, PostgreSQL- und Amazon Redshift-Quelldatenbanken unterstützt. Für diese Datenbanken sind die folgenden zusätzlichen Voraussetzungen erforderlich, um die parallele Verarbeitung und die automatische Wiederaufnahme zu aktivieren (je nach Quelldatenbanktyp können zusätzliche Voraussetzungen gelten):
  • Die Quelltabelle ist Range-partitioniert.
  • Für mindestens eine numerische Spalte sind Histogrammstatistiken vorhanden.
  • Ein numerischer Index oder Primärschlüssel ist vorhanden.

Wenn diese Voraussetzungen nicht erfüllt sind, wird die Tabelle ohne parallele Verarbeitung kopiert, und wenn der Job unterbrochen wird, wird er vom Tabellenanfang neu gestartet, anstatt ab dem Zeitpunkt der Unterbrechung wiederaufzunehmen.

Im Folgenden werden datenbankspezifische Voraussetzungen aufgeführt:

  • PostgreSQL-Quelldatenbank
    • Erstellen Sie die erforderlichen Views in der PostgreSQL-Quelldatenbank. Um die parallele Verarbeitung und eine zuverlässige Wiederherstellbarkeit bei der Migration von PostgreSQL zu unterstützen, erstellen Sie die erforderlichen Views in der Quelldatenbank. Wenn die Ansichten nicht vorhanden sind, verwendet der Import keine parallele Kopie, und wenn das Laden einer Tabelle unterbrochen wird, wird sie von Anfang an neu gestartet.
    • Sie können diese Ansichten mit von Oracle bereitgestellten Skripten erstellen, die auf GitHub verfügbar sind. Prüfen und führen Sie die Skripte in der PostgreSQL-Quelldatenbank aus, bevor Sie den Import starten.

Weitere Informationen finden Sie in der PostgreSQL 18.3-Dokumentation.

  • MySQL-Quelldatenbank
    • schema_list wird für MySQL-Quellen nicht unterstützt, weil MySQL keine Schemas verwendet. Wenn Sie REATE_IMPORT_TASK aufrufen, geben Sie ein leeres Array für schema_list ([]) an.

    • Der Wert, den Sie für service_name angeben, wird als Schemaname verwendet.

    • Erstellen Sie die erforderlichen Ansichten in der MySQL-Quelldatenbank. Um die parallele Verarbeitung und zuverlässige Neustartfähigkeit bei der Migration von MySQL zu unterstützen, erstellen Sie die erforderlichen Ansichten in der Quelldatenbank. Wenn die Ansichten nicht vorhanden sind, verwendet der Import keine parallele Kopie, und wenn das Laden einer Tabelle unterbrochen wird, wird sie von Anfang an neu gestartet.

    • Sie können diese Ansichten mit von Oracle bereitgestellten Skripten erstellen, die in Github verfügbar sind. Prüfen Sie die Skripte in der MySQL-Quelldatenbank, und führen Sie sie aus, bevor Sie den Import starten.

Weitere Informationen finden Sie in der MySQL-Referenz.

  • Amazon Redshift-Quelldatenbank
    • Berechtigungen für den Datenbanklinkzugriff erteilen Um Daten aus Remote-Tabellen zu lesen, müssen Sie sicherstellen, dass der Account, mit dem Sie den Datenbanklink erstellen, über die erforderlichen Berechtigungen verfügt. Beispiel:

      • GRANT USAGE ON SCHEMA <remote_schema> TO <dblink_user>;

      • GRANT SELECT ON <remote_schema>.<remote_table> TO <dblink_user>;

    • Stellen Sie die Sichtbarkeit von Metadaten für Nicht-public-Schemas sicher. Wenn das Remoteschema nicht public ist und der Import Metadaten abfragen muss (z.B. über pg_table_def), müssen Sie das Schema in die search_path des Datenbanklinkbenutzers aufnehmen. Beispiel:

      • ALTER USER <dblink_user> SET search_path TO <new_value>;

Weitere Informationen finden Sie in der Dokumentation zu Amazon Redshift.

Daten mit DBMS_CLOUD_IMPORT importieren

Beschreibt, wie Sie Daten mit DBMS_CLOUD_IMPORT in die autonome KI-Datenbank importieren.

Um Daten in eine autonome KI-Datenbank zu importieren, verwenden Sie die Prozedur DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK. Mit dieser Prozedur können Sie Daten aus Oracle und unterstützten Nicht-Oracle-Datenbanken importieren, indem Sie die erforderlichen Verbindungsdetails und optional die zu importierenden Objekte angeben.

Sie können eine gesamte Datenbank oder eine Teilmenge von Daten, wie bestimmte Schemas oder Tabellen, importieren, indem Sie Parameter wie schema_list oder table_list angeben. Wenn Sie diese Prozedur ausführen, erstellt Oracle Database einen Oracle Scheduler-Job zur Verwaltung der Importaufgabe. Der Job verwendet die angegebenen Verbindungsdetails und Zugangsdaten, um einen Datenbanklink zur Quelldatenbank zu erstellen und Daten in die autonome KI-Datenbank zu übertragen.

Das Verhalten des Imports hängt vom Typ der Quelldatenbank ab:

  • Oracle-zu-Oracle-Importe: Daten und Datenbankobjekte werden migriert. Indizes, Constraints und Partitionen werden automatisch in der autonomen KI-Zieldatenbank erstellt. Wenn der Import unterbrochen wird (z. B. aufgrund von Wartungsarbeiten), wird er ab dem Zeitpunkt der Unterbrechung fortgesetzt.
  • Import aus Nicht-Oracle-Datenbanken: Es werden nur Daten migriert. Schlüssel, Indizes, Constraints und andere abhängige Objekte werden nicht erstellt. Partitionen werden nur erstellt, wenn die Quelltabelle Range-partitioniert ist. Die Fortsetzungsfunktion hängt von den Voraussetzungen ab. Andernfalls wird der Import von Anfang an neu gestartet.

Sie müssen den Import als Benutzer ADMIN ausführen. Die autonome Zieldatenbank bleibt während des Imports verfügbar. Oracle empfiehlt jedoch, andere Aktivitäten in der Zieldatenbank zu vermeiden, bis der Import abgeschlossen ist. Wenn ein Importjob unterbrochen wird (z.B. aufgrund einer geplanten Wartung oder eines unerwarteten Ausfalls), kann er ab dem Zeitpunkt der Unterbrechung oder des Neustarts fortgesetzt werden, je nach Quelldateityp und ob die Voraussetzungen erfüllt sind. Sie können den Job auch vorübergehend unterbrechen und wiederaufnehmen und dann fortsetzen.

Importaufgabe erstellen

Beschreibt die Schritte zum Erstellen einer Importaufgabe.

Bevor Sie die Importaufgabe erstellen und starten, richten Sie die Authentifizierung für die Quelldatenbank ein. DBMS_CLOUD_IMPORT verwendet ein Zugangsdatenobjekt, um eine sichere Verbindung zur Quelle herzustellen (und den erforderlichen Datenbanklink für die Aufgabe zu erstellen).

Gehen Sie wie folgt vor, um eine Importaufgabe zu erstellen:

  1. Erstellen Sie Zugangsdaten für die Quelldatenbank. Diese Zugangsdaten werden für die sichere Authentifizierung und Verbindung zum Quellsystem verwendet. Beispiel:
    BEGIN
      DBMS_CLOUD.CREATE_CREDENTIAL(
        credential_name => 'db1_cred',
        username        => '<username>',
        password        => '<password>'
      );
    END;
    /

    Weitere Informationen finden Sie unter Prozedur CREATE_CREDENTIAL.

  2. Importaufgabe erstellen:

    Nachdem Sie die Zugangsdaten erstellt haben, erstellen und starten Sie mit der Prozedur DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK eine Importaufgabe. Bei diesem Verfahren werden Daten aus Oracle und unterstützten Nicht-Oracle-Datenbanken wie MySQL, PostgreSQL und Amazon Redshift importiert.

    Wenn Sie diese Prozedur ausführen, geben Sie die erforderlichen Verbindungsdetails und Zugangsdaten an. Sie können auch steuern, welche Daten importiert werden, indem Sie Parameter wie schema_list oder table_list verwenden.

    Oracle Database führt den Import als Oracle Scheduler-Job aus, der den Vorgang verwaltet und den Fortschritt verfolgt. Der Job verwaltet den Status des Imports auf Tabellenebene. Wenn der Import unterbrochen wird, wird er automatisch fortgesetzt, indem die letzten unvollständigen Tabellen fortgesetzt werden, anstatt den gesamten Vorgang neu zu starten.

    Die folgenden Beispiele zeigen, wie Sie Importaufgaben für verschiedene Quelldatenbanktypen erstellen, indem Sie die erforderlichen Verbindungsdetails und Zugangsdaten angeben.

    Beispiel: Erstellt eine Importaufgabe, die eine Verbindung zu einer Oracle-Quelle herstellt und nur die angegebenen Tabellen (z.B. ADMIN.TABLE1 und ADMIN.TABLE2) in die autonome KI-Zieldatenbank migriert.
    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name          => '<orcl_import_job>',
        hostname           => '<example1.oraclecloud.com>',
        port               => '<port>',
        service_name       => '<service_name>',
        ssl_server_cert_dn => '<cn=remote_db_cn_name>',
        directory_name     => '<walletdb1>',
        credential_name    => 'db1_cred',
        table_list         => '[{"schema_name": "admin", "table_name": "table1"},
                               {"schema_name": "admin",  "table_name": "table2"}]'
      );
    END;
    /

    Beispiel: Erstellt eine Importaufgabe, die mit den angegebenen Verbindungsdetails und Zugangsdaten eine Verbindung zur Oracle-Quelldatenbank herstellt und das gesamte ADMIN-Schema migriert. Verwenden Sie schema_list, wenn Sie ein oder mehrere Schemas migrieren möchten, anstatt einzelne Tabellen anzugeben.
    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name          => 'orcl_import_job',
        hostname           => '<remote_db_hostname>',
        port               => '<remote_db_port>',
        service_name       => '<remote_db_service_name>',
        ssl_server_cert_dn => '<cn=remote_db_cn_name>',
        directory_name     => '<walletdb>',
        credential_name    => 'db1_cred',
        schema_list        => '["admin"]'
      );
    END;
    /
    Hinweis

    • So beschränken Sie den Umfang des Imports:
      • Verwenden Sie schema_list, um mindestens ein Schema zu importieren.

      • Verwenden Sie table_list, um bestimmte Tabellen über mehrere Schemas zu importieren.

    • Der Parameter table_list wird nur unterstützt, wenn die Quelldatenbank Oracle ist und nicht für Nicht-Oracle-Datenbanken unterstützt wird.
    • Wenn table_list verwendet wird:
      • Schemametadaten für die zugehörigen Schemas werden nach Bedarf importiert.

      • Daten werden nur für die Tabellen importiert, die explizit in table_list angegeben sind.

    • Geben Sie keine sich überschneidenden Objekte in schema_list und table_list an. Verwenden Sie nur eine Option, um ein bestimmtes Schema oder eine bestimmte Tabelle auszuwählen.

    Beispiel: Erstellt eine Importaufgabe für eine MySQL-Quelle, indem gateway_params angegeben wird und db_type auf mysql gesetzt ist. Außerdem wird angegeben, was mit schema_list migriert werden soll (wie für die Gatewaykonfiguration anwendbar).

    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name        => 'mysql_import_job',
        hostname         => '<mysql_hostname>',
        port             => '<mysql_port>',
        service_name     => '<mysql_service>',
        credential_name  => '<mysql_cred>',
        gateway_params   => JSON_OBJECT('db_type' VALUE 'mysql'),
        schema_list      => '["dg4odbc"]'
      );
    END;
    /

    Beispiel: Erstellt eine Importaufgabe für eine PostgreSQL-Quelle, indem gateway_params angegeben wird und db_type auf postgres gesetzt ist. Die Aufgabe stellt eine Verbindung zu PostgreSQL her und migriert Daten basierend auf der Aufgabenkonfiguration in die autonome KI-Zieldatenbank.

    BEGIN
      DBMS_CLOUD_IMPORT.CREATE_IMPORT_TASK(
        task_name        => '<postgres_import_job>',
        hostname         => '<postgres_hostname>',
        port             => '<5432>',
        service_name     => '<postgres_serv>',
        credential_name  => '<postgres_cred>',
        gateway_params   => JSON_OBJECT('db_type' VALUE 'postgres')
      );
    END;
    /

    In diesen Beispielen identifizieren hostname, port und service_name den Quelldatenbankendpunkt und werden von der Aufgabe zum Herstellen der Konnektivität verwendet (einschließlich des Erstellens des erforderlichen Datenbanklinks). credential_name authentifiziert sich bei der Quelldatenbank, sodass der Link erstellt werden kann. Verwenden Sie für Oracle-Quellen table_list, um bestimmte Tabellen zu migrieren, oder schema_list, um ein oder mehrere Schemas zu migrieren. Bei Nicht-Oracle-Datenbanken ist gateway_params auch erforderlich, um den Quelldatenbanktyp (z.B. MySQL oder PostgreSQL) anzugeben und die entsprechende Gateway-basierte Konnektivität für den Import zu aktivieren.

Import anhalten und wiederaufnehmen

Beschreibt, wie Sie einen Importvorgang unterbrechen und wiederaufnehmen.

Bei Bedarf können Sie den Import mit der Prozedur SUSPEND_IMPORT_TASK vorübergehend unterbrechen:

BEGIN
  DBMS_CLOUD_IMPORT.SUSPEND_IMPORT_TASK(
    task_name => 'orcl_import_job'
 );
END;
/

Dadurch wird der Scheduler-Job gestoppt, während der gesamte Fortschritt und alle Metadaten beibehalten werden. Weitere Informationen finden Sie unter Prozedur SUSPEND_IMPORT_TASK.

Um den Import fortzusetzen, verwenden Sie die Prozedur RESUME_IMPORT_TASK:

BEGIN
  DBMS_CLOUD_IMPORT.RESUME_IMPORT_TASK(
    task_name => 'orcl_import_job'
  );
END;
/

Der Job wird vom letzten Checkpoint fortgesetzt, abgeschlossene Tabellen übersprungen und die verbleibende Arbeit fortgesetzt.

Hinweis

Das Fortsetzungsverhalten hängt vom Quelldatenbanktyp und den Voraussetzungen ab. Wenn die Voraussetzungen für die parallele Verarbeitung und die automatische Fortsetzung erfüllt sind, wird der Import ab dem Zeitpunkt der Unterbrechung fortgesetzt. Andernfalls verwendet der Import keine parallele Kopie, und wenn der Job unterbrochen wird, wird er am Anfang der Tabelle neu gestartet.

Weitere Informationen finden Sie unter Prozedur RESUME_IMPORT_TASK.

Importfortschritt überwachen

Nachdem Sie eine Importaufgabe gestartet haben, wird der Scheduler-Job im Hintergrund ausgeführt, und die autonome KI-Datenbank zeichnet den Fortschritt sowohl auf Aufgaben- als auch auf Tabellenebene auf.

Mit den folgenden Data Dictionary Views können Sie den Importfortschritt und -status überwachen:
  • DBA_DATA_IMPORT_TASK_STATUS: Zeigt den Fortschritt auf Aufgabenebene an, einschließlich Gesamtstatus, Fertigstellungsgrad und eine Aktivitätsübersicht (z.B. Tabellen, die derzeit in Bearbeitung sind).
  • DBA_DATA_IMPORT_TABLE_STATUS: Zeigt den Fortschritt auf Tabellenebene für jede zu importierende Tabelle an, einschließlich Status- und Fehlerdetails für nicht erfolgreiche Tabellen.

Beispiel: Fragen Sie DBA_DATA_IMPORT_TABLE_STATUS ab, um Fortschritt und Fehler auf Tabellenebene anzuzeigen. Die Spalte STATUS gibt den aktuellen Status jeder Tabelle an, wie SUCCEEDED, FAILED, LOADING oder STOPPED.

BEGIN
  DBMS_CLOUD.CREATE_CREDENTIAL(
    credential_name => 'db1_cred',
    username        => '<username>',
    password        => '<password>'
  );
END;
/

Die Ausgabe sieht in etwa folgendermaßen aus:

IMPORT_TASK_NAME   SCHEMA_NAME   SCHEMA_OBJECT   STATUS
------------------ ------------- --------------- ----------
IMPORT_JOB1        SALES         ORDERS          SUCCEEDED
IMPORT_JOB1        SALES         CUSTOMERS       SUCCEEDED
IMPORT_JOB1        HR            EMPLOYEES       LOADING
IMPORT_JOB1        HR            DEPARTMENTS     FAILED

Nach Abschluss des Imports wird der Scheduler-Job automatisch deaktiviert. Weitere Informationen finden Sie unter Heterogenen Import überwachen und diagnostizieren.

Importaufgabe löschen

Beschreibt die Schritte zum Löschen einer Importaufgabe.

Nachdem der Import abgeschlossen ist und nicht mehr benötigt wird, können Sie die Importaufgabe entfernen. Wenn Sie die Aufgabe löschen, werden der Scheduler-Job, Datenbanklinks und die zugehörigen Metadaten entfernt. Objekte oder Daten, die bereits im Zielschema erstellt wurden, werden nicht zurückgesetzt, und eine in Bearbeitung befindliche Tabelle kann teilweise geladen werden.

Wenn Sie den Import für dasselbe Schema erneut ausführen, müssen Sie möglicherweise teilweise geladene Tabellen manuell bereinigen. Um unvollständige Tabellen zu identifizieren, fragen Sie Data Dictionary Views wie DBA_DATA_IMPORT_TABLE_STATUS ab, und prüfen Sie den Tabellenstatus, bevor Sie eine Bereinigung durchführen.

BEGIN
  DBMS_CLOUD_IMPORT.DROP_IMPORT_TASK(
    task_name => 'orcl_import_job'
  );
END;
/

In diesem Beispiel wird der Importjob ORCL_IMPORT_JOB gelöscht. Weitere Informationen finden Sie unter Prozedur DROP_IMPORT_TASK.

Heterogenen Import überwachen und diagnostizieren

Um Probleme zu diagnostizieren und den Fortschritt von Datenimportvorgängen zu überwachen, können Sie die folgenden Data Dictionary Views abfragen. Diese Views enthalten detaillierte Informationen zu Aufgabenstatus, Ausführungsfortschritt, parallelen Vorgängen und zugehörigen Objekten.

Ansichtsname Beschreibung
Ansicht - DBA_DATA_IMPORT_TASK_STATUS Zeigt den Status jeder Tabelle innerhalb einer Importaufgabe an, einschließlich aller während der Verarbeitung aufgetretenen Fehler.
Ansicht - DBA_DATA_IMPORT_TABLE_STATUS Enthält allgemeine Details auf Aufgabenebene, einschließlich Fortschrittsinformationen, wie die Anzahl der verarbeiteten, geladenen und erfolgreich abgeschlossenen Tabellen.