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:
- Di BigQuery di konsol Google Cloud , buka halaman Translation details, lalu buka tab Log Messages.
- Klik kueri yang memiliki pesan
RelationNotFoundatauAttributeNotFounddi kolom Kategori. - Klik Perbaikan yang disarankan.
- Klik Terapkan.
- 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:
- Buka halaman Detail terjemahan dan buka tab Pesan Log.
- Klik kueri yang memiliki pesan
RelationNotFoundatauAttributeNotFounddi kolom Kategori. Untuk membuka file dan baris yang berisi error di tab kode, klik
pesan error.
Di kolom Tindakan, klik Perbaikan yang disarankan.
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-lengthdan-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
- Pelajari lebih lanjut ringkasan migrasi.
- Pelajari cara menjalankan penilaian migrasi.
- Pelajari cara menerjemahkan kueri dengan penerjemah SQL interaktif.
- Pelajari cara memigrasikan kode dengan penerjemah SQL batch.
- Pelajari cara membuat metadata untuk terjemahan dan penilaian.