Mendiagnosis masalah dalam migrasi Oracle ke Cloud SQL untuk PostgreSQL

Halaman ini mencantumkan error umum dan langkah-langkah pemecahan masalah yang direkomendasikan untuk:

Error tugas migrasi

Proses tugas migrasi dapat menimbulkan error selama runtime.

  • Beberapa error, seperti sandi yang salah di database sumber, dapat dipulihkan. Tugas migrasi dilanjutkan secara otomatis setelah error ini diperbaiki.
  • Beberapa error tidak dapat dipulihkan, seperti error dalam replikasi data. Anda harus memulai ulang tugas migrasi setelah error ini diperbaiki.

Jika terjadi error, status tugas migrasi akan berubah menjadi Failed, dan substatus mencerminkan status terakhir sebelum kegagalan. Untuk memecahkan masalah error, buka tugas migrasi yang gagal untuk melihat error, lalu ikuti langkah-langkah yang diuraikan dalam pesan error. Untuk melihat detail selengkapnya tentang error, buka Cloud Monitoring menggunakan link di tugas migrasi. Log difilter ke tugas migrasi tertentu.

Dalam tabel berikut, Anda dapat menemukan beberapa contoh masalah dan cara menyelesaikannya:

Gejala Kemungkinan penyebab Hal-hal yang sebaiknya dicoba
Pesan error: Database Migration Service can't set up a tunnel to be connected to the bastion host. Database Migration Service tidak dapat mengakses bastion host atau bastion host tidak menerima koneksi. Verifikasi setelan tunnel SSH penerusan Anda di profil koneksi sumber dan konfigurasi server tunnel SSH, lalu coba lagi.
Pesan error: Database Migration Service can't connect to the database atau Database Migration Service private connectivity error, cannot connect to the database. Database Migration Service tidak dapat membuat konektivitas ke database Oracle sumber.

Verifikasi bahwa Anda dapat mengakses database sumber dari project Anda. Periksa setelan yang terkait dengan metode konfigurasi konektivitas sumber.

Jika ada kode error Oracle tertentu yang disertakan, misalnya ORA-12170: TNS:Connect timeout occurred, lihat dokumentasi Oracle untuk mengetahui informasi selengkapnya.

Pesan error: Archiving mode is not ARCHIVELOG. Database sumber Anda tidak berjalan dalam mode ARCHIVELOG. Konfigurasi database sumber Anda untuk menggunakan mode ARCHIVELOG. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi database Oracle sumber.
Pesan error: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below. Database sumber Anda tidak mengaktifkan data log tambahan. Aktifkan data log tambahan dan tetapkan modenya ke ALL. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi database Oracle sumber.
Pesan error: No Archive Log Files were found in the source. Database Migration Service hanya membaca log arsip yang ditutup, dan tidak ada log yang ditemukan di database sumber.
  1. Jalankan perintah berikut di database sumber untuk menutup file log saat ini: ALTER SYSTEM SWITCH LOGFILE.
  2. Coba temukan log lagi.

Jika database tidak memiliki operasi tulis aktif, Anda mungkin perlu melakukan setidaknya satu operasi INSERT untuk memicu pembuatan log.

Pesan error: We're missing the necessary permissions to read from the source. Akun pengguna migrasi di database sumber Anda tidak memiliki izin yang diperlukan.

Layanan Migrasi Database terhubung ke sumber Anda sebagai akun pengguna yang Anda konfigurasi di profil koneksi sumber. Akun tersebut memerlukan serangkaian izin tertentu (misalnya, SELECT ANY TABLE) untuk membaca data di database sumber Anda.

Pastikan akun pengguna migrasi memiliki hak istimewa yang diperlukan. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi database Oracle sumber.

Pesan error: Unable to connect to the destination database. Terjadi masalah saat menghubungkan ke database tujuan. Verifikasi bahwa Anda dapat mengakses database tujuan dari project Anda. Periksa setelan yang terkait dengan metode konfigurasi konektivitas tujuan.
Pesan error: The following tables don't exist in the destination database: {table_names}. Tabel yang tercantum yang Anda coba migrasikan tidak ada di database tujuan. Database Migration Service membuat tabel dan definisi yang diperlukan saat Anda mengonversi skema sumber.
Pesan error: password authentication failed for user {username}. Nama pengguna atau sandi untuk database tujuan salah dikonfigurasi. Pastikan profil koneksi PostgreSQL tujuan dikonfigurasi dengan benar menggunakan nama pengguna dan sandi yang tepat.
Pesan error: The following tables in the destination database don't have primary keys: {table_names}. Tabel yang tercantum dalam pesan error ada di database tujuan, tetapi tidak memiliki kunci utama.

Ruang kerja konversi Database Migration Service otomatis menambahkan kunci primer untuk tabel yang tidak memilikinya saat Anda mengonversi skema.

Jika menggunakan ruang kerja konversi lama, Anda harus membuat kunci utama secara manual di tujuan. Untuk mengetahui informasi selengkapnya, lihat Ruang kerja konversi lama.

Peringatan: The following tables have foreign keys: {table_names}. Tabel yang tercantum dalam pesan error ada di database tujuan, tetapi memiliki kunci asing.

Database Migration Service tidak mereplikasi data secara transaksional, sehingga tabel dapat dimigrasikan secara tidak berurutan. Jika kunci asing ada, dan tabel turunan yang menggunakan kunci asing dimigrasikan sebelum induknya, Anda mungkin mengalami error replikasi.

Untuk menghindari masalah integritas data tersebut, lewati kunci asing dengan menggunakan opsi REPLICATION untuk pengguna migrasi. Untuk mengetahui informasi selengkapnya, lihat Pertimbangan untuk kunci asing dan pemicu.

Pesan error: Unable to resume replication as log position is lost. Error ini mungkin terjadi saat proses replikasi dijeda dalam waktu yang lama, sehingga menyebabkan hilangnya posisi log. Tugas migrasi tidak boleh dijeda lebih lama dari (atau mendekati) periode retensi log. Jika posisi log hilang, Anda harus membuat ulang tugas migrasi.
Pesan error: ORA-00942: table or view does not exist. Error ini mungkin terjadi akibat caching di server Oracle. Buat ulang pengguna database untuk memperbaiki masalah caching.
Tugas migrasi tetap berada di fase dump penuh dan tidak berlanjut ke fase pengambilan data perubahan (CDC). Database Migration Service masih melakukan dump penuh untuk beberapa tabel, atau satu atau beberapa tabel tidak dapat menyelesaikan dump penuh karena error.
  • Periksa error tugas migrasi dan perbaiki error yang berlaku untuk tabel atau hapus tabel terkait dari tugas.
  • Periksa log Database Migration Service untuk aktivitas dump penuh yang sedang berlangsung dan tunggu hingga selesai.

Terjadi masalah konektivitas

Bagian ini mencantumkan dan menjelaskan langkah-langkah pemecahan masalah untuk potensi masalah konektivitas jaringan.

Tidak dapat terhubung ke database tujuan: EOF

Menjalankan uji konektivitas menampilkan pesan error [DATABASE] unable to connect to the destination database: EOF.

Kemungkinan penyebab: Lampiran layanan dikonfigurasi dengan salah.

Hal yang dapat dicoba: Pastikan enable_proxy_protocol disetel ke false di file konfigurasi Terraform lampiran layanan. Protokol proxy hanya didukung untuk server HTTP seperti NGINX dan Apache.

Saat menggunakan gcloud untuk membuat penyiapan Private Service Connect, protokol proxy dinonaktifkan secara default.

Waktu tunggu koneksi habis, koneksi ditolak

Menjalankan uji konektivitas gagal atau waktu habis. Hal ini kemungkinan besar disebabkan oleh kesalahan konfigurasi perutean dalam penyiapan Private Service Connect. Masalah ini dapat terjadi karena beberapa alasan.

Kemungkinan penyebab: Tidak ada aturan firewall yang memungkinkan rentang CIDR NAT Private Service Connect mengakses subnet Private Service Connect tempat bastion berada, khususnya antarmuka nic0 VM bastion.

Hal yang dapat dicoba: Pastikan kebijakan organisasi Anda tidak membatasi aturan firewall internal, seperti aturan firewall psc_sp_in_fw yang ditentukan dalam contoh skrip Terraform untuk mengonfigurasi konektivitas IP pribadi tujuan untuk instance Cloud SQL yang tidak mendukung PSC.

Kemungkinan penyebab: Proxy tidak berfungsi. Tidak ada pendengar di port yang diberikan, sehingga koneksi terhenti.

Hal yang dapat dicoba: Anda dapat mencoba membuat koneksi SSH ke VM bastion, dan menelusuri proxy menggunakan perintah berikut:

  • netstat -tunalp | grep PORT

Menganalisis respons terhadap perintah:

  • Jika Anda mendapatkan respons kosong, berarti proxy tidak berfungsi. Coba jalankan perintah berikut:

    sudo su; cd / dan periksa apakah server Dante telah diinstal dengan menjalankan sudo dpkg -s dante-server:

    • Jika proxy diinstal, Anda akan mendapatkan pesan berikut:

      Status: install ok installed

    • Jika proxy tidak diinstal, kemungkinan masalahnya adalah router tidak ada. Tambahkan router dan periksa apakah Anda dapat mendownload proxy dengan menjalankan apt-get install dante-server.

  • Jika proxy berjalan dan memproses di port yang diberikan, coba buka koneksi ke proxy dengan melakukan hal berikut:

    1. Instal klien PostgreSQL:

      sudo apt-get install postgresql-client.

    2. Hubungkan ke database PostgreSQL:

      psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W (Anda akan diminta untuk memasukkan sandi).

      Ganti kode berikut:

      • PORT: nomor port database.
      • DBUSERNAME: nama pengguna yang digunakan untuk terhubung ke database PostgreSQL.
    3. Instal klien telnet:

      sudo apt-get install telnet

    4. Terhubung ke klien telnet:

      telnet 127.0.0.1 PORT

      Ganti PORT dengan nomor port database.

    Bergantung pada hasil perintah:

    • Jika perintah gagal membuka koneksi, coba lihat log proxy untuk menemukan penyebab utamanya. Penyebab utama dapat bervariasi, bergantung pada penyiapan instance Cloud SQL.

    • Jika koneksi dibuka menggunakan telnet, tetapi terhenti di klien, kemungkinan masalahnya adalah perutean alamat IP bastion. Di VM Anda, ketik ip route di terminal. Lihat apakah Anda dapat menemukan aturan perutean yang merutekan koneksi ke alamat IP pribadi instance Cloud SQL menggunakan nic sekunder (nic1, alamat IP DB_SUBNETWORK_GATEWAY).

Kemungkinan penyebab: Lampiran layanan tidak menerima koneksi endpoint yang berasal dari Database Migration Service. Lampiran layanan menyimpan daftar project yang diterima, dan project Database Migration Service tidak disertakan dalam daftar.

Hal yang dapat dicoba: Untuk mengatasi masalah ini, coba salah satu langkah berikut:

  • Di konsol Google Cloud , buka Private Service Connect.

    Buka Private Service Connect

    Di tab Layanan yang dipublikasikan, terima koneksi dari Database Migration Service untuk lampiran layanan Anda (jika statusnya tertunda).

  • Tambahkan project yang meminta ke project yang diizinkan dalam lampiran layanan (jika ditolak).

    Jika cara ini tidak menyelesaikan masalah, buat ulang profil koneksi.

  • Hapus profil koneksi yang terkait dengan konektivitas Private Service Connect, lalu buat ulang.

Memecahkan masalah error SCAN Oracle

Bagian ini menjelaskan potensi masalah yang mungkin Anda alami saat bermigrasi dari sumber Oracle Real Application Clusters (RAC) menggunakan fitur Single Client Access Name (SCAN).

Tidak dapat membuat konektivitas ke database SCAN Oracle

Menjalankan uji konektivitas gagal atau waktu habis.

Kemungkinan penyebab: Anda mungkin mencoba membuat konektivitas langsung ke database sumber Oracle SCAN. Database Migration Service tidak mendukung konektivitas langsung ke database menggunakan fitur SCAN di lingkungan Oracle RAC.

Hal yang dapat dicoba: Untuk mengatasi masalah ini, coba salah satu langkah berikut:

  • Hubungkan langsung ke salah satu node.

  • Gunakan Oracle Connection Manager.

  • Buat konfigurasi konektivitas pribadi menggunakan solusi reverse proxy seperti HAProxy.