Probleme bei der Migration von Oracle zu Cloud SQL for PostgreSQL diagnostizieren

Auf dieser Seite finden Sie bekannte Fehler und empfohlene Schritte zur Fehlerbehebung für:

Fehler bei Migrationsjobs

Während der Laufzeit des Migrationsjobs können Fehler auftreten.

  • Einige Fehler, z. B. ein falsches Passwort für die Quelldatenbank, können behoben werden. Der Migrationsjob wird automatisch fortgesetzt, sobald diese Fehler behoben sind.
  • Einige Fehler sind nicht behebbar, z. B. Fehler bei der Datenreplikation. Sie müssen den Migrationsjob neu starten, nachdem diese Fehler behoben wurden.

Wenn ein Fehler auftritt, ändert sich der Status des Migrationsjobs in Failed und der Unterstatus spiegelt den letzten Status vor dem Fehler wider. Rufen Sie zur Fehlerbehebung den fehlgeschlagenen Migrationsjob auf, um den Fehler zu sehen, und folgen Sie den Schritten in der Fehlermeldung. Wenn Sie weitere Details zum Fehler aufrufen möchten, rufen Sie Cloud Monitoring über den Link im Migrationsjob auf. Die Logs werden nach dem jeweiligen Migrationsjob gefiltert.

In der folgenden Tabelle finden Sie einige Beispiele für Probleme und wie sie gelöst werden können:

Symptom Mögliche Ursachen Lösungsvorschlag
Fehlermeldung: Database Migration Service can't set up a tunnel to be connected to the bastion host. Database Migration Service konnte nicht auf den Bastion Host zugreifen oder der Bastion Host akzeptiert keine Verbindungen. Prüfen Sie die Einstellungen für den Weiterleitungs-SSH-Tunnel im Quellverbindungsprofil und die Konfiguration des SSH-Tunnelservers und versuchen Sie es noch einmal.
Fehlermeldung: Database Migration Service can't connect to the database oder Database Migration Service private connectivity error, cannot connect to the database. Database Migration Service konnte keine Verbindung zur Oracle-Quelldatenbank herstellen.

Prüfen Sie, ob Sie von Ihrem Projekt aus auf die Quelldatenbank zugreifen können. Prüfen Sie die Einstellungen für die Konfigurationsmethode für die Quellverbindung.

Wenn ein bestimmter Oracle-Fehlercode enthalten ist, z. B. ORA-12170: TNS:Connect timeout occurred, finden Sie weitere Informationen in der Oracle-Dokumentation.

Fehlermeldung: Archiving mode is not ARCHIVELOG. Ihre Quelldatenbank wird nicht im ARCHIVELOG-Modus ausgeführt. Konfigurieren Sie Ihre Quelldatenbank für den Modus ARCHIVELOG. Weitere Informationen finden Sie unter Oracle-Quelldatenbank konfigurieren.
Fehlermeldung: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below. In Ihrer Quelldatenbank sind keine zusätzlichen Logdaten aktiviert. Aktivieren Sie zusätzliche Logdaten und legen Sie den Modus auf ALL fest. Weitere Informationen finden Sie unter Oracle-Quelldatenbank konfigurieren.
Fehlermeldung: No Archive Log Files were found in the source. Database Migration Service liest nur geschlossene Archivlogs und in der Quelldatenbank wurden keine Logs gefunden.
  1. Führen Sie den folgenden Befehl in der Quelldatenbank aus, um die aktuelle Logdatei zu schließen: ALTER SYSTEM SWITCH LOGFILE.
  2. Versuchen Sie noch einmal, die Protokolle zu finden.

Wenn die Datenbank keine aktiven Schreibvorgänge hat, müssen Sie möglicherweise mindestens einen INSERT-Vorgang ausführen, um die Erstellung des Logs auszulösen.

Fehlermeldung: We're missing the necessary permissions to read from the source. Das Migrationsnutzerkonto in Ihrer Quelldatenbank hat nicht die erforderlichen Berechtigungen.

Database Migration Service stellt eine Verbindung zu Ihrer Quelle als das Nutzerkonto her, das Sie im Quellverbindungsprofil konfigurieren. Dieses Konto benötigt bestimmte Berechtigungen (z. B. SELECT ANY TABLE), um Daten in Ihrer Quelldatenbank zu lesen.

Achten Sie darauf, dass das Nutzerkonto für die Migration die erforderlichen Berechtigungen hat. Weitere Informationen finden Sie unter Oracle-Quelldatenbank konfigurieren.

Fehlermeldung: Unable to connect to the destination database. Beim Herstellen der Verbindung zur Zieldatenbank ist ein Problem aufgetreten. Prüfen Sie, ob Sie von Ihrem Projekt aus auf die Zieldatenbank zugreifen können. Prüfen Sie die Einstellungen für die Konfigurationsmethode für die Zielverbindung.
Fehlermeldung: The following tables don't exist in the destination database: {table_names}. Die aufgeführten Tabellen, die Sie migrieren möchten, sind in der Zieldatenbank nicht vorhanden. Database Migration Service erstellt die erforderliche Tabelle und die Definitionen, wenn Sie das Quellschema konvertieren.
Fehlermeldung: password authentication failed for user {username}. Der Nutzername oder das Passwort für die Zieldatenbank ist falsch konfiguriert. Achten Sie darauf, dass das PostgreSQL-Zielverbindungsprofil mit dem richtigen Nutzernamen und Passwort konfiguriert ist.
Fehlermeldung: The following tables in the destination database don't have primary keys: {table_names}. Die in der Fehlermeldung aufgeführten Tabellen sind in der Zieldatenbank vorhanden, aber es fehlen Primärschlüssel.

In Konvertierungsarbeitsbereichen von Database Migration Service werden automatisch Primärschlüssel für Tabellen hinzugefügt, die keine haben, wenn Sie das Schema konvertieren.

Wenn Sie Legacy-Konvertierungsarbeitsbereiche verwenden, müssen Sie die Primärschlüssel manuell im Ziel erstellen. Weitere Informationen finden Sie unter Legacy-Konvertierungsarbeitsbereiche.

Warnung: The following tables have foreign keys: {table_names}. Die in der Fehlermeldung aufgeführten Tabellen sind in der Zieldatenbank vorhanden, haben aber Fremdschlüssel.

Database Migration Service repliziert Daten nicht transaktional, sodass Tabellen möglicherweise nicht in der richtigen Reihenfolge migriert werden. Wenn Fremdschlüssel vorhanden sind und eine untergeordnete Tabelle, die einen Fremdschlüssel verwendet, vor der übergeordneten Tabelle migriert wird, können Replikationsfehler auftreten.

Um solche Probleme mit der Datenintegrität zu vermeiden, überspringen Sie Fremdschlüssel, indem Sie die Option REPLICATION für den Migrationsnutzer verwenden. Weitere Informationen finden Sie unter Überlegungen zu Fremdschlüsseln und Triggern.

Fehlermeldung: Unable to resume replication as log position is lost. Dieser Fehler kann auftreten, wenn der Replikationsprozess für längere Zeit pausiert wird, was zum Verlust der Logposition führt. Ein Migrationsjob sollte nicht länger als (oder fast so lange wie) die Aufbewahrungsdauer für Logs pausiert werden. Wenn die Logposition verloren geht, müssen Sie den Migrationsjob neu erstellen.
Fehlermeldung: ORA-00942: table or view does not exist. Dieser Fehler kann durch Caching auf dem Oracle-Server verursacht werden. Erstellen Sie den Datenbanknutzer neu, um das Caching-Problem zu beheben.
Der Migrationsjob bleibt in der Phase des vollständigen Dumps und geht nicht in die CDC-Phase (Change Data Capture) über. Database Migration Service führt für einige der Tabellen noch einen vollständigen Dump aus oder ein oder mehrere Tabellen können aufgrund von Fehlern keinen vollständigen Dump ausführen.
  • Prüfen Sie die Fehler des Migrationsjobs und beheben Sie entweder die Fehler, die sich auf Tabellen beziehen, oder entfernen Sie die zugehörigen Tabellen aus dem Job.
  • Prüfen Sie die Database Migration Service-Logs auf laufende vollständige Dump-Aktivitäten und warten Sie, bis diese abgeschlossen sind.

Verbindungsprobleme

In diesem Abschnitt werden Schritte zur Fehlerbehebung bei potenziellen Netzwerkverbindungsproblemen aufgeführt und beschrieben.

Es konnte keine Verbindung zur Zieldatenbank hergestellt werden: EOF

Beim Ausführen eines Konnektivitätstests wird die Fehlermeldung [DATABASE] unable to connect to the destination database: EOF zurückgegeben.

Mögliche Ursache: Der Dienstanhang ist falsch konfiguriert.

Mögliche Lösung: Prüfen Sie, ob enable_proxy_protocol in der Terraform-Konfigurationsdatei für den Dienstanhang auf false gesetzt ist. Das Proxyprotokoll wird nur für HTTP-Server wie NGINX und Apache unterstützt.

Wenn Sie gcloud verwenden, um die Private Service Connect-Einrichtung zu erstellen, ist das Proxy-Protokoll standardmäßig deaktiviert.

Zeitüberschreitung der Verbindung, Verbindung abgelehnt

Der Konnektivitätstest schlägt fehl oder es kommt zu einer Zeitüberschreitung. Dies wird wahrscheinlich durch ein falsch konfiguriertes Routing in der Private Service Connect-Einrichtung verursacht. Dieses Problem kann verschiedene Ursachen haben.

Mögliche Ursache: Es fehlt eine Firewallregel, die dem Private Service Connect-NAT-CIDR-Bereich den Zugriff auf das Private Service Connect-Subnetz ermöglicht, in dem sich die Bastion befindet, insbesondere die Bastion-VM-Schnittstelle nic0.

Mögliche Lösung: Achten Sie darauf, dass Ihre Organisationsrichtlinie keine internen Firewallregeln einschränkt, z. B. die Firewallregel psc_sp_in_fw, die im Terraform-Beispielskript für die Konfiguration der privaten IP-Verbindung zum Ziel für nicht PSC-fähige Cloud SQL-Instanzen definiert ist.

Mögliche Ursache: Der Proxy ist ausgefallen. Es gibt keinen Listener am angegebenen Port, daher bleibt die Verbindung hängen.

Mögliche Lösung: Sie können versuchen, eine SSH-Verbindung zur Bastion-VM herzustellen und mit dem folgenden Befehl nach dem Proxy zu suchen:

  • netstat -tunalp | grep PORT

Analysieren Sie die Antworten auf den Befehl:

  • Wenn Sie eine leere Antwort erhalten, ist der Proxy ausgefallen. Führen Sie die folgenden Befehle aus:

    sudo su; cd / und prüfen Sie mit sudo dpkg -s dante-server, ob der Dante-Server installiert ist:

    • Wenn der Proxy installiert ist, erhalten Sie die folgende Meldung:

      Status: install ok installed

    • Wenn der Proxy nicht installiert ist, liegt das Problem wahrscheinlich an einem fehlenden Router. Fügen Sie einen Router hinzu und prüfen Sie, ob Sie den Proxy herunterladen können, indem Sie apt-get install dante-server ausführen.

  • Wenn der Proxy ausgeführt wird und den angegebenen Port überwacht, versuchen Sie, eine Verbindung zu ihm herzustellen. Gehen Sie dazu so vor:

    1. Installieren Sie den PostgreSQL-Client:

      sudo apt-get install postgresql-client.

    2. Stellen Sie eine Verbindung zur PostgreSQL-Datenbank her:

      psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W (Sie werden aufgefordert, das Passwort einzugeben).

      Ersetzen Sie Folgendes:

      • PORT: die Portnummer der Datenbank.
      • DBUSERNAME: Der Nutzername, der für die Verbindung zur PostgreSQL-Datenbank verwendet wird.
    3. Installieren Sie den Telnet-Client:

      sudo apt-get install telnet

    4. Stellen Sie eine Verbindung zum Telnet-Client her:

      telnet 127.0.0.1 PORT

      Ersetzen Sie PORT durch die Portnummer der Datenbank.

    Je nach Ergebnis der Befehle:

    • Wenn die Befehle keine Verbindung herstellen können, sehen Sie sich die Proxylogs an, um die Ursache zu finden. Die Ursache kann je nach Einrichtung der Cloud SQL-Instanz variieren.

    • Wenn die Verbindung über Telnet geöffnet wird, aber im Client hängen bleibt, liegt das Problem wahrscheinlich am Routing der Bastion-IP-Adresse. Geben Sie auf Ihrer VM im Terminal ip route ein. Prüfen Sie, ob Sie eine Routingregel finden, die Verbindungen zur privaten IP-Adresse der Cloud SQL-Instanz über die sekundäre nic (nic1, die IP-Adresse DB_SUBNETWORK_GATEWAY) weiterleitet.

Mögliche Ursache: Der Dienstanhang akzeptiert die Endpunktverbindung von Database Migration Service nicht. Der Dienstanhang enthält eine Liste der akzeptierten Projekte. Das Database Migration Service-Projekt ist nicht in der Liste enthalten.

Lösungsvorschläge: Versuchen Sie Folgendes, um das Problem zu beheben:

  • Wechseln Sie in der Google Cloud Console zu Private Service Connect.

    Zu Private Service Connect

    Akzeptieren Sie auf dem Tab Veröffentlichte Dienste die Verbindung von Database Migration Service für Ihren Dienstanhang (falls sie aussteht).

  • Fügen Sie das anfragende Projekt den Projekten auf der Zulassungsliste im Dienstanhang hinzu (falls es abgelehnt wurde).

    Wenn das Problem dadurch nicht behoben wird, erstellen Sie das Verbindungsprofil neu.

  • Löschen Sie das Verbindungsprofil, das mit der Private Service Connect-Verbindung verknüpft ist, und erstellen Sie es neu.

Oracle SCAN-Fehler beheben

In diesem Abschnitt werden potenzielle Probleme beschrieben, die bei der Migration von Oracle Real Application Clusters-Quellen (RAC) mit der SCAN-Funktion (Single Client Access Name) auftreten können.

Verbindung zu einer Oracle SCAN-Datenbank kann nicht hergestellt werden

Der Konnektivitätstest schlägt fehl oder es kommt zu einer Zeitüberschreitung.

Mögliche Ursache: Sie versuchen möglicherweise, eine direkte Verbindung zu Ihrer Oracle SCAN-Quelldatenbank herzustellen. Der Database Migration Service unterstützt keine direkte Verbindung zu Datenbanken über die SCAN-Funktion in Oracle RAC-Umgebungen.

Lösungsvorschläge: Versuchen Sie Folgendes, um das Problem zu beheben:

  • Stellen Sie eine direkte Verbindung zu einem der Knoten her.

  • Verwenden Sie den Oracle Connection Manager.

  • Erstellen Sie eine Konfiguration für private Konnektivität mit einer Reverse-Proxy-Lösung wie HAProxy.