Probleme bei der Migration beheben

Dieses Dokument soll Ihnen helfen, häufige Probleme bei der Migration Ihres Data Warehouse (z. B. Teradata, Amazon Redshift, Oracle oder Apache Hive) zu BigQuery zu beheben. Dazu gehören Probleme mit der Migrationsbewertung, der interaktiven und Batch-SQL-Übersetzung sowie der Metadatengenerierung mit dem dwh-migration-dumper-Befehlszeilen-Extraktionstool.

Wenn Sie Details zur Jobausführung, Fehlercodes und die Slot-Nutzung für migrierte Abfragen und Jobs prüfen möchten, können Sie auch die Ansicht INFORMATION_SCHEMA.JOBS abfragen.

Migrationsbewertung

In den folgenden Abschnitten werden häufige Probleme und Techniken zur Fehlerbehebung bei der Migration Ihres Data Warehouse zu BigQuery erläutert.

dwh-migration-dumper-Toolfehler

Informationen zur Fehlerbehebung bei Fehlern und Warnungen in der Terminalausgabe des dwh-migration-dumper-Tools, die beim Extrahieren von Metadaten oder Abfragelogs aufgetreten sind, finden Sie unter Fehlerbehebung beim Generieren von Metadaten.

Fehler bei der Hive-Migration

In den folgenden Abschnitten werden häufige Probleme beschrieben, die bei der Migration Ihres Data Warehouse von Hive zu BigQuery auftreten können.

Der Logging-Hook hadoop-migration-assessment für die Abfragelog-Extraktion schreibt Debugging-Logeinträge in Ihre hive-server2-Logs. Überprüfen Sie bei Problemen die Logging-Hook-Debugging-Logs, die den String MigrationAssessmentLoggingHook enthalten.

Fehler ClassNotFoundException verarbeiten

Dieser Fehler kann dadurch verursacht werden, dass die Logging-Hook-JAR-Datei am falschen Ort gespeichert wurde. Prüfen Sie, ob Sie die JAR-Datei dem Ordner auxlib im Hive-Cluster hinzugefügt haben. Alternativ können Sie den vollständigen Pfad zur JAR-Datei im Attribut hive.aux.jars.path angeben, z. B. file://AUXLIB_PATH/HiveMigrationAssessmentQueryLogsHooks_deploy.jar.

Unterordner werden nicht im konfigurierten Ordner angezeigt

Dieses Problem kann durch eine fehlerhafte Konfiguration oder Probleme bei der Logging-Hook-Initialisierung verursacht werden.

Suchen Sie in den hive-server2-Debugging-Logs nach den folgenden Logging-Hook-Einträgen:

Unable to initialize logger, logging disabled
Log dir configuration key 'dwhassessment.hook.base-directory' is not set,
logging disabled.
Error while trying to set permission

Sehen Sie sich die Problemdetails an und prüfen Sie, ob Sie etwas korrigieren müssen, um das Problem zu beheben.

Dateien werden nicht im Ordner angezeigt

Dieses Problem kann durch Probleme verursacht werden, die während der Ereignisverarbeitung oder beim Schreiben in eine Datei aufgetreten sind.

Suchen Sie in den hive-server2-Debugging-Logs nach den folgenden Logging-Hook-Einträgen:

Failed to close writer for file
Got exception while processing event
Error writing record for query

Sehen Sie sich die Problemdetails an und prüfen Sie, ob Sie etwas korrigieren müssen, um das Problem zu beheben.

Einige Abfrageereignisse fehlen

Dieses Problem kann durch einen Überlauf der Logging-Hook-Thread-Warteschlange verursacht werden.

Suchen Sie in den hive-server2-Debugging-Logs nach dem folgenden Logging-Hook-Eintrag:

Writer queue is full. Ignoring event

Wenn diese Meldung angezeigt wird, sollten Sie den Parameter dwhassessment.hook.queue.capacity erhöhen.

Interaktiver SQL-Übersetzer

In den folgenden Abschnitten werden häufige Fehler beschrieben, die bei der Verwendung des interaktiven SQL-Übersetzers auftreten können.

Übersetzungsprobleme bei RelationNotFound oder AttributeNotFound

Nachdem Sie eine Abfrage mit dem interaktiven SQL-Übersetzer übersetzt haben, kann es vorkommen, dass die Übersetzung mit dem Fehler RelationNotFound oder AttributeNotFound fehlschlägt.

Fehlgeschlagene Übersetzungen finden Sie in BigQuery in der Google Cloud -Konsole auf der Seite Übersetzungsdetails auf dem Tab Log Messages (Log-Nachrichten).

Geben Sie die Anweisungen zur Datendefinitionssprache (Data Definition Language, DDL) für alle Tabellen ein, die in einer Abfrage vor der Abfrage selbst verwendet wurden, um eine möglichst genaue Übersetzung zu gewährleisten. Wenn Sie beispielsweise die Amazon Redshift-Abfrage select table1.field1, table2.field1 from table1, table2 where table1.id = table2.id; übersetzen möchten, geben Sie die folgenden SQL-Anweisungen in den interaktiven SQL-Übersetzer ein:

create table schema1.table1 (id int, field1 int, field2 varchar(16));
create table schema1.table2 (id int, field1 varchar(30), field2 date);

select table1.field1, table2.field1
from table1, table2
where table1.id = table2.id;

Übersetzungsprobleme mit Gemini beheben

Um fehlgeschlagene Übersetzungsjobs mit den Fehlern RelationNotFound oder AttributeNotFound zu beheben, können Sie auch Gemini verwenden:

  1. Rufen Sie in BigQuery in der Google Cloud Console die Seite Übersetzungsdetails auf und öffnen Sie den Tab Log-Nachrichten.
  2. Klicken Sie in der Spalte Kategorie auf die Abfrage mit der Meldung RelationNotFound oder AttributeNotFound.
  3. Klicken Sie auf Vorgeschlagene Korrektur.
  4. Klicken Sie auf Übernehmen.
  5. Wenn Sie die Abfrage noch einmal übersetzen möchten, klicken Sie auf Übersetzen.

Batch-SQL-Übersetzer

In den folgenden Abschnitten werden häufige Fehler bei der Verwendung des Batch-SQL-Übersetzers beschrieben.

Übersetzungsprobleme bei RelationNotFound oder AttributeNotFound

Nachdem Sie eine Abfrage mit dem Batch-SQL-Übersetzer übersetzt haben, kann es vorkommen, dass die Übersetzung mit dem Fehler RelationNotFound oder AttributeNotFound fehlschlägt.

Fehlgeschlagene Übersetzungen finden Sie in BigQuery in der Google Cloud Console auf der Seite Übersetzungsdetails auf dem Tab Log Messages (Log-Nachrichten).

Übersetzung funktioniert am besten mit Metadaten-DDLs. Wenn SQL-Objektdefinitionen nicht gefunden werden können, gibt die Übersetzungs-Engine RelationNotFound- oder AttributeNotFound-Probleme aus. Wir empfehlen die Verwendung des Metadaten-Extrahierers zum Generieren von Metadatenpaketen, um dafür zu sorgen, dass alle Objektdefinitionen vorhanden sind. Das Hinzufügen von Metadaten ist der erste empfohlene Schritt, um die meisten Übersetzungsfehler zu beheben, da oft viele andere Fehler behoben werden können, die indirekt durch ein Fehlen von Metadaten verursacht werden.

Weitere Informationen finden Sie unter Metadaten für Übersetzung und Bewertung generieren.

Übersetzungsprobleme mit Gemini beheben

Um fehlgeschlagene Übersetzungsjobs mit den Fehlern RelationNotFound oder AttributeNotFound zu beheben, können Sie auch Gemini verwenden:

  1. Rufen Sie die Seite Übersetzungsdetails auf und öffnen Sie den Tab Protokollnachrichten.
  2. Klicken Sie in der Spalte Kategorie auf die Abfrage mit der Meldung RelationNotFound oder AttributeNotFound.
  3. Wenn Sie zur Datei und Zeile mit dem Fehler auf dem Tab „Code“ wechseln möchten, klicken Sie auf das

    Fehlermeldung.

  4. Klicken Sie in der Spalte Aktion auf Vorgeschlagene Korrektur.

  5. Wählen Sie eine der folgenden Optionen aus: Übernehmen oder Übernehmen und noch einmal ausführen:

    • Wenn Sie die generierte Schemadatei aus dem Ausgabeverzeichnis in das Eingabeverzeichnis kopieren möchten, klicken Sie auf Übernehmen.
    • Wenn Sie die generierte Schemadatei aus dem Ausgabeverzeichnis in das Eingabeverzeichnis kopieren und ein Fenster für die erneute Ausführung öffnen möchten, klicken Sie auf Übernehmen und noch einmal ausführen.

Metadaten für Übersetzung und Bewertung generieren

In den folgenden Abschnitten werden einige häufige Probleme und Techniken zur Fehlerbehebung für das dwh-migration-dumper-Tool erläutert.

Fehler aufgrund fehlenden Speichers

Der Fehler java.lang.OutOfMemoryError in der Terminalausgabe des dwh-migration-dumper-Tools ist häufig auf unzureichenden Speicher für die Verarbeitung abgerufener Daten zurückzuführen. Erhöhen Sie den verfügbaren Speicher oder reduzieren Sie die Anzahl der Verarbeitungsthreads, um dieses Problem zu beheben.

Sie können den maximalen Arbeitsspeicher erhöhen. Exportieren Sie dazu die Umgebungsvariable JAVA_OPTS:

Linux

export JAVA_OPTS="-Xmx4G"

Windows

set JAVA_OPTS="-Xmx4G"

Sie können die Anzahl der Verarbeitungsthreads reduzieren (Standard ist 32), indem Sie den Flag-Wert --thread-pool-size einfügen. Diese Option wird nur für die Connectors hiveql und redshift* unterstützt:

dwh-migration-dumper --thread-pool-size=1

Umgang mit dem Fehler WARN...Task failed

Manchmal wird in der Terminalausgabe des dwh-migration-dumper-Tools der Fehler WARN [main] o.c.a.d.MetadataDumper [MetadataDumper.java:107] Task failed: … angezeigt. Das Extraktionstool sendet mehrere Abfragen an das Quellsystem und die Ausgabe jeder Abfrage wird in eine eigene Datei geschrieben. Dieses Problem zeigt an, dass eine dieser Abfragen fehlgeschlagen ist. Das Fehlschlagen einer Abfrage verhindert jedoch nicht die Ausführung der anderen Abfragen. Wenn mehrere WARN-Fehler angezeigt werden, prüfen Sie die Problemdetails und prüfen Sie, ob Sie etwas korrigieren müssen, damit die Abfrage ordnungsgemäß ausgeführt wird. Wenn der beim Ausführen des Extraktionstools angegebene Datenbanknutzer beispielsweise nicht berechtigt ist, alle Metadaten zu lesen, versuchen Sie es mit einem Nutzer mit den richtigen Berechtigungen noch einmal.

Beschädigte ZIP-Datei

Laden Sie die Datei SHA256SUMS.txt herunter und führen Sie den folgenden Befehl aus, um die ZIP-Datei des dwh-migration-dumper-Tools zu validieren:

Bash

sha256sum --check SHA256SUMS.txt

Das Ergebnis OK bestätigt die erfolgreiche Prüfsummenverifizierung. Jede andere Meldung weist auf einen Verifizierungsfehler hin:

  • FAILED: computed checksum did NOT match: Die ZIP-Datei ist beschädigt und muss noch einmal heruntergeladen werden.
  • FAILED: listed file could not be read: Die Version der ZIP-Datei kann nicht gefunden werden. Laden Sie die Prüfsumme und die ZIP-Dateien aus derselben Releaseversion herunter und speichern Sie sie im selben Verzeichnis.

Windows PowerShell

(Get-FileHash RELEASE_ZIP_FILENAME).Hash -eq ((Get-Content SHA256SUMS.txt) -Split " ")[0]

Ersetzen Sie RELEASE_ZIP_FILENAME durch den heruntergeladenen ZIP-Dateinamen des dwh-migration-dumper-Befehlszeilen-Extraktionstools, z. B. dwh-migration-tools-v1.0.52.zip.

Das Ergebnis True bestätigt die erfolgreiche Prüfsummenverifizierung.

Das Ergebnis False weist auf einen Bestätigungsfehler hin. Laden Sie die Prüfsumme und die ZIP-Dateien aus derselben Releaseversion herunter und speichern Sie sie im selben Verzeichnis.

Die Extraktion von Teradata-Abfragelogs ist langsam

Zur Verbesserung der Leistung von Join-Tabellen, die mit den Flags -Dteradata-logs.query-logs-table und -Dteradata-logs.sql-logs-table angegeben werden, können Sie eine zusätzliche Spalte vom Typ DATE in der Bedingung JOIN einfügen. Diese Spalte muss in beiden Tabellen definiert und Teil des partitionierten Primärindex sein. Zum Einschließen dieser Spalte verwenden Sie das Flag -Dteradata-logs.log-date-column.

Das folgende Beispiel zeigt, wie das Flag -Dteradata-logs.log-date-column verwendet wird:

Bash

dwh-migration-dumper \
  -Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV \
  -Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl \
  -Dteradata-logs.log-date-column=ArchiveLogDate

Windows PowerShell

dwh-migration-dumper `
  "-Dteradata-logs.query-logs-table=historicdb.ArchivedQryLogV" `
  "-Dteradata-logs.sql-logs-table=historicdb.ArchivedDBQLSqlTbl" `
  "-Dteradata-logs.log-date-column=ArchiveLogDate"

Größenbeschränkung für Teradata-Zeilen überschritten

Teradata Version 15 hat eine Zeilengröße von 64 KB. Wenn das Limit überschritten wird, schlägt das Extraktionstool mit der folgenden Meldung fehl:

[Error 9804] [SQLState HY000] Response Row size or Constant Row size overflow

Zur Behebung dieses Fehlers erweitern Sie entweder das Zeilenlimit auf 1 MB oder teilen die Zeilen in mehrere Zeilen auf:

  • Installieren und aktivieren Sie das Feature „1MB Perm and Response Rows“ und die aktuelle TTU-Software. Weitere Informationen finden Sie unter Teradata-Datenbanknachricht 9804.
  • Teilen Sie den langen Abfragetext mithilfe der Flags -Dteradata.metadata.max-text-length und -Dteradata-logs.max-sql-length in mehrere Zeilen auf.

Der folgende Befehl zeigt, wie Sie das Flag -Dteradata.metadata.max-text-length verwenden, um langen Abfragetext in mehrere Zeilen mit jeweils maximal 10.000 Zeichen aufzuteilen:

Bash

dwh-migration-dumper \
  --connector teradata \
  -Dteradata.metadata.max-text-length=10000

Windows PowerShell

dwh-migration-dumper `
  --connector teradata `
  "-Dteradata.metadata.max-text-length=10000"

Der folgende Befehl zeigt, wie Sie das Flag -Dteradata-logs.max-sql-length verwenden, um langen Abfragetext in mehrere Zeilen mit jeweils maximal 10.000 Zeichen aufzuteilen:

Bash

dwh-migration-dumper \
  --connector teradata-logs \
  -Dteradata-logs.max-sql-length=10000

Windows PowerShell

dwh-migration-dumper `
  --connector teradata-logs `
  "-Dteradata-logs.max-sql-length=10000"

Oracle-Verbindungsproblem

In häufigen Fällen wie einem ungültigen Passwort oder Hostnamen gibt das dwh-migration-dumper-Tool eine aussagekräftige Fehlermeldung aus, die das zugrunde liegende Problem beschreibt. In einigen Fällen ist die vom Oracle-Server zurückgegebene Fehlermeldung jedoch allgemein und schwer zu untersuchen.

Eines dieser Probleme ist IO Error: Got minus one from a read call. Dieser Fehler gibt an, dass die Verbindung zum Oracle-Server hergestellt wurde, der Server den Client jedoch nicht akzeptiert und die Verbindung geschlossen hat. Dieses Problem tritt in der Regel auf, wenn der Server nur TCPS-Verbindungen akzeptiert. Standardmäßig verwendet das dwh-migration-dumper-Tool das TCP-Protokoll. Um dieses Problem zu beheben, müssen Sie die Oracle JDBC-Verbindungs-URL überschreiben.

Anstatt die Flags oracle-service, host und port anzugeben, können Sie dieses Problem beheben, indem Sie das Flag url im folgenden Format angeben: jdbc:oracle:thin:@tcps://HOST_NAME:PORT/ORACLE_SERVICE. Normalerweise ist die vom Oracle-Server verwendete TCPS-Portnummer 2484.

Im folgenden Beispiel sehen Sie, wie die Verbindungs-URL im Befehl angegeben wird:

dwh-migration-dumper \
  --connector oracle-stats \
  --url "jdbc:oracle:thin:@tcps://HOST_NAME:PORT/ORACLE_SERVICE" \
  --assessment \
  --driver "JDBC_DRIVER_PATH" \
  --user "USER" \
  --password

Zusätzlich zum Ändern des Verbindungsprotokolls in TCPS müssen Sie möglicherweise die trustStore-SSL-Konfiguration angeben, die zum Überprüfen des Oracle-Serverzertifikats erforderlich ist. Eine fehlende SSL-Konfiguration führt zu einer Unable to find valid certification path-Fehlermeldung. Um dieses Problem zu beheben, legen Sie die Umgebungsvariable JAVA_OPTS fest:

set JAVA_OPTS=-Djavax.net.ssl.trustStore="JKS_FILE_LOCATION" -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword="PASSWORD"

Je nach Konfiguration des Oracle-Servers müssen Sie möglicherweise auch die keyStore-Konfiguration angeben. Weitere Informationen zu Konfigurationsoptionen finden Sie unter SSL With Oracle JDBC Driver.

Nächste Schritte