Memecahkan masalah migrasi

Dokumen ini membantu Anda memecahkan masalah umum saat memigrasikan data warehouse (seperti Teradata, Amazon Redshift, Oracle, atau Apache Hive) ke BigQuery, termasuk masalah terkait penilaian migrasi, terjemahan SQL interaktif dan batch, serta pembuatan metadata menggunakan alat ekstraksi command line dwh-migration-dumper.

Untuk memeriksa detail eksekusi tugas, kode error, dan penggunaan slot untuk kueri dan tugas yang dimigrasikan, Anda juga dapat membuat kueri tampilan INFORMATION_SCHEMA.JOBS.

Penilaian migrasi

Bagian berikut menjelaskan masalah umum dan teknik pemecahan masalah untuk memigrasikan data warehouse Anda ke BigQuery.

Error alat dwh-migration-dumper

Untuk memecahkan masalah error dan peringatan dalam output terminal alat dwh-migration-dumper yang terjadi selama ekstraksi metadata atau log kueri, lihat pemecahan masalah pembuatan metadata.

Error migrasi Hive

Bagian berikut menjelaskan masalah umum yang mungkin Anda alami saat Anda berencana memigrasikan data warehouse dari Hive ke BigQuery.

Hook logging ekstraksi log kueri hadoop-migration-assessment menulis pesan log debug di log hive-server2 Anda. Jika Anda mengalami masalah, tinjau log debug hook logging, yang berisi string MigrationAssessmentLoggingHook.

Menangani error ClassNotFoundException

Error ini mungkin disebabkan oleh salah penempatan file JAR hook logging. Pastikan Anda telah menambahkan file JAR ke folder auxlib di cluster Hive. Atau, Anda dapat menentukan jalur lengkap ke file JAR di properti hive.aux.jars.path—misalnya, file://AUXLIB_PATH/HiveMigrationAssessmentQueryLogsHooks_deploy.jar.

Subfolder tidak muncul di folder yang dikonfigurasi

Masalah ini mungkin disebabkan oleh kesalahan konfigurasi atau masalah selama inisialisasi hook logging.

Telusuri pesan hook logging berikut di log debug hive-server2 Anda:

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

Tinjau detail masalah dan lihat apakah ada hal yang perlu diperbaiki untuk mengatasi masalah tersebut.

File tidak muncul di folder

Masalah ini mungkin disebabkan oleh masalah yang terjadi selama pemrosesan peristiwa atau saat menulis ke file.

Telusuri pesan hook logging berikut di log debug hive-server2 Anda:

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

Tinjau detail masalah dan lihat apakah ada hal yang perlu diperbaiki untuk mengatasi masalah tersebut.

Beberapa peristiwa kueri terlewat

Masalah ini mungkin disebabkan oleh overflow antrean thread hook logging.

Telusuri log debug hive-server2 untuk menemukan pesan hook logging berikut:

Writer queue is full. Ignoring event

Jika Anda melihat pesan ini, pertimbangkan untuk meningkatkan parameter dwhassessment.hook.queue.capacity.

Penerjemah SQL interaktif

Bagian berikut menjelaskan error yang sering terjadi saat menggunakan penerjemah SQL interaktif.

Masalah terjemahan RelationNotFound atau AttributeNotFound

Setelah menerjemahkan kueri menggunakan penerjemah SQL interaktif, Anda mungkin mengalami kegagalan terjemahan dengan error RelationNotFound atau AttributeNotFound.

Anda dapat menemukan terjemahan yang gagal dengan membuka halaman Detail terjemahan di BigQuery di konsol Google Cloud dan membuka tab Pesan Log.

Untuk memastikan terjemahan yang paling akurat, Anda dapat memasukkan pernyataan bahasa definisi data (DDL) untuk tabel apa pun yang digunakan dalam kueri sebelum kueri itu sendiri. Misalnya, jika Anda ingin menerjemahkan kueri Amazon Redshift select table1.field1, table2.field1 from table1, table2 where table1.id = table2.id;, masukkan pernyataan SQL berikut ke dalam penerjemah SQL interaktif:

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;

Memperbaiki masalah terjemahan dengan Gemini

Untuk memperbaiki tugas terjemahan yang gagal dengan error RelationNotFound atau AttributeNotFound, Anda juga dapat menggunakan Gemini untuk menyelesaikan masalah ini:

  1. Di BigQuery di konsol Google Cloud , buka halaman Translation details, lalu buka tab Log Messages.
  2. Klik kueri yang memiliki pesan RelationNotFound atau AttributeNotFound di kolom Kategori.
  3. Klik Perbaikan yang disarankan.
  4. Klik Terapkan.
  5. Untuk menerjemahkan ulang kueri, klik Terjemahkan.

Penerjemah SQL batch

Bagian berikut menjelaskan error umum yang terjadi saat menggunakan penerjemah SQL batch.

Masalah terjemahan RelationNotFound atau AttributeNotFound

Setelah menerjemahkan kueri menggunakan penerjemah SQL batch, Anda mungkin mengalami kegagalan terjemahan dengan error RelationNotFound atau AttributeNotFound.

Anda dapat menemukan terjemahan yang gagal dengan membuka halaman Detail terjemahan di BigQuery di konsol Google Cloud dan membuka tab Pesan Log.

Terjemahan berfungsi paling baik dengan DDL metadata. Jika definisi objek SQL tidak dapat ditemukan, mesin terjemahan akan menimbulkan masalah RelationNotFound atau AttributeNotFound. Sebaiknya gunakan ekstraktor metadata untuk membuat paket metadata guna memastikan semua definisi objek ada. Menambahkan metadata adalah langkah pertama yang direkomendasikan untuk mengatasi sebagian besar error terjemahan, karena langkah ini sering kali memperbaiki banyak error lain yang disebabkan secara tidak langsung oleh kurangnya metadata.

Untuk mengetahui informasi selengkapnya, lihat Membuat metadata untuk terjemahan dan penilaian.

Memperbaiki masalah terjemahan dengan Gemini

Untuk memperbaiki tugas terjemahan yang gagal dengan error RelationNotFound atau AttributeNotFound, Anda juga dapat menggunakan Gemini untuk menyelesaikan masalah ini:

  1. Buka halaman Detail terjemahan dan buka tab Pesan Log.
  2. Klik kueri yang memiliki pesan RelationNotFound atau AttributeNotFound di kolom Kategori.
  3. Untuk membuka file dan baris yang berisi error di tab kode, klik

    pesan error.

  4. Di kolom Tindakan, klik Perbaikan yang disarankan.

  5. Pilih salah satu opsi berikut, Terapkan atau Terapkan dan jalankan ulang:

    • Untuk menyalin file skema yang dihasilkan dari direktori output ke direktori input, klik Terapkan.
    • Untuk menyalin file skema yang dihasilkan dari direktori output ke direktori input dan membuka jendela jalankan ulang, klik Terapkan dan jalankan ulang.

Membuat metadata untuk terjemahan dan penilaian

Bagian berikut menjelaskan beberapa masalah umum dan teknik pemecahan masalah untuk alat dwh-migration-dumper.

Error kehabisan memori

Error java.lang.OutOfMemoryError dalam output terminal alat dwh-migration-dumper sering kali terkait dengan memori yang tidak mencukupi untuk memproses data yang diambil. Untuk mengatasi masalah ini, tingkatkan memori yang tersedia atau kurangi jumlah thread pemrosesan.

Anda dapat meningkatkan memori maksimum dengan mengekspor variabel lingkungan JAVA_OPTS:

Linux

export JAVA_OPTS="-Xmx4G"

Windows

set JAVA_OPTS="-Xmx4G"

Anda dapat mengurangi jumlah thread pemrosesan (defaultnya adalah 32) dengan menyertakan nilai flag --thread-pool-size. Opsi ini hanya didukung untuk konektor hiveql dan redshift*:

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

Menangani error WARN...Task failed

Terkadang Anda mungkin melihat error WARN [main] o.c.a.d.MetadataDumper [MetadataDumper.java:107] Task failed: … dalam output terminal alat dwh-migration-dumper. Alat ekstraksi mengirimkan beberapa kueri ke sistem sumber, dan output setiap kueri ditulis ke filenya sendiri. Jika masalah ini muncul, berarti salah satu kueri ini gagal. Namun, kegagalan satu kueri tidak mencegah eksekusi kueri lainnya. Jika Anda melihat lebih dari beberapa error WARN, tinjau detail masalah dan lihat apakah ada hal yang perlu diperbaiki agar kueri dapat berjalan dengan baik. Misalnya, jika pengguna database yang Anda tentukan saat menjalankan alat ekstraksi tidak memiliki izin untuk membaca semua metadata, coba lagi dengan pengguna yang memiliki izin yang tepat.

File ZIP rusak

Untuk memvalidasi file ZIP alat dwh-migration-dumper, download file SHA256SUMS.txt dan jalankan perintah berikut:

Bash

sha256sum --check SHA256SUMS.txt

Hasil OK mengonfirmasi keberhasilan verifikasi checksum. Pesan lain menunjukkan error verifikasi:

  • FAILED: computed checksum did NOT match: file ZIP rusak dan harus didownload lagi.
  • FAILED: listed file could not be read: versi file ZIP tidak dapat ditemukan. Download file checksum dan ZIP dari versi rilis yang sama dan tempatkan di direktori yang sama.

Windows PowerShell

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

Ganti RELEASE_ZIP_FILENAME dengan nama file ZIP yang didownload dari rilis alat ekstraksi command line dwh-migration-dumper—misalnya, dwh-migration-tools-v1.0.52.zip.

Hasil True mengonfirmasi keberhasilan verifikasi checksum.

Hasil False menunjukkan error verifikasi. Download file checksum dan ZIP dari versi rilis yang sama dan tempatkan di direktori yang sama.

Ekstraksi log kueri Teradata lambat

Untuk meningkatkan performa penggabungan tabel yang ditentukan oleh flag -Dteradata-logs.query-logs-table dan -Dteradata-logs.sql-logs-table, Anda dapat menyertakan kolom tambahan berjenis DATE dalam kondisi JOIN. Kolom ini harus ditentukan di kedua tabel dan harus menjadi bagian dari Indeks Primer yang Dipartisi. Untuk menyertakan kolom ini, gunakan flag -Dteradata-logs.log-date-column.

Contoh berikut menunjukkan cara menggunakan flag -Dteradata-logs.log-date-column:

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"

Batas ukuran baris Teradata terlampaui

Teradata versi 15 memiliki batas ukuran baris 64 KB. Jika batas terlampaui, alat ekstraksi akan gagal dengan pesan berikut:

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

Untuk mengatasi error ini, perpanjang batas baris hingga 1 MB atau pisahkan baris menjadi beberapa baris:

  • Instal dan aktifkan fitur Baris Respons dan Izin 1 MB serta software TTU saat ini. Untuk mengetahui informasi selengkapnya, lihat Pesan Database Teradata 9804.
  • Pisahkan teks kueri panjang menjadi beberapa baris menggunakan flag -Dteradata.metadata.max-text-length dan -Dteradata-logs.max-sql-length.

Perintah berikut menunjukkan cara menggunakan flag -Dteradata.metadata.max-text-length untuk membagi teks kueri panjang menjadi beberapa baris dengan masing-masing baris maksimal 10.000 karakter:

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"

Perintah berikut menunjukkan cara menggunakan tanda -Dteradata-logs.max-sql-length untuk membagi teks kueri panjang menjadi beberapa baris yang masing-masing berisi paling banyak 10.000 karakter:

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"

Masalah koneksi Oracle

Dalam kasus umum seperti sandi atau nama host yang tidak valid, alat dwh-migration-dumper mencetak pesan error yang bermakna yang menjelaskan masalah utamanya. Namun, dalam beberapa kasus, pesan error yang ditampilkan oleh server Oracle mungkin bersifat umum dan sulit diselidiki.

Salah satu masalah ini adalah IO Error: Got minus one from a read call. Error ini menunjukkan bahwa koneksi ke server Oracle telah dibuat, tetapi server tidak menerima klien dan menutup koneksi. Masalah ini biasanya terjadi saat server hanya menerima koneksi TCPS. Secara default, alat dwh-migration-dumper menggunakan protokol TCP. Untuk mengatasi masalah ini, Anda harus mengganti URL koneksi JDBC Oracle.

Daripada memberikan flag oracle-service, host, dan port, Anda dapat menyelesaikan masalah ini dengan memberikan flag url dalam format berikut: jdbc:oracle:thin:@tcps://HOST_NAME:PORT/ORACLE_SERVICE. Biasanya, nomor port TCPS yang digunakan oleh server Oracle adalah 2484.

Contoh berikut menunjukkan cara menentukan URL koneksi dalam perintah:

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

Selain mengubah protokol koneksi menjadi TCPS, Anda mungkin perlu memberikan konfigurasi SSL trustStore yang diperlukan untuk memverifikasi sertifikat server Oracle. Konfigurasi SSL yang tidak ada akan menghasilkan pesan error Unable to find valid certification path. Untuk mengatasi masalah ini, tetapkan variabel lingkungan JAVA_OPTS:

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

Bergantung pada konfigurasi server Oracle, Anda mungkin juga perlu memberikan konfigurasi keyStore. Untuk mengetahui informasi selengkapnya tentang opsi konfigurasi, lihat SSL dengan Driver JDBC Oracle.

Langkah berikutnya