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 mungkin mengalami error selama runtime.

  • Beberapa error, seperti sandi yang salah di database sumber, dapat dipulihkan. Tugas migrasi akan 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.

Saat error terjadi, status tugas migrasi 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 mengatasinya:

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. Layanan Migrasi Database tidak dapat mengakses host bastion atau host bastion 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. 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. Konfigurasikan database sumber Anda untuk menggunakan mode ARCHIVELOG. Untuk 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 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 minimal 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 konfigurasikan di profil koneksi sumber. Akun tersebut memerlukan kumpulan izin tertentu (misalnya SELECT ANY TABLE) untuk membaca data di database sumber Anda.

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

Pesan error: Unable to connect to the destination database. Terjadi error saat menyambungkan ke database tujuan. Pastikan Anda dapat mengakses database tujuan dari project. 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. Layanan Migrasi Database 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 akan otomatis menambahkan kunci utama untuk tabel yang tidak memilikinya saat Anda mengonversi skema.

Jika menggunakan ruang kerja konversi lama, Anda perlu membuat kunci utama secara manual di tujuan. Untuk 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 mungkin 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 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 selama 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 perlu membuat ulang tugas migrasi.
Pesan error: ORA-00942: table or view does not exist. Error ini mungkin terjadi karena penyimpanan dalam cache di server Oracle. Buat ulang pengguna database untuk memperbaiki masalah penyimpanan dalam cache.
Tugas migrasi tetap berada dalam fase dump penuh dan tidak melanjutkan 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 koneksi jaringan.

Tidak dapat terhubung ke database tujuan: EOF

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

Kemungkinan penyebab: Lampiran layanan tidak dikonfigurasi dengan benar.

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 tunggu habis. Hal ini kemungkinan besar disebabkan oleh pemetaan yang salah dikonfigurasi dalam penyiapan Private Service Connect. Masalah ini dapat disebabkan oleh beberapa alasan.

Kemungkinan penyebab: Tidak ada aturan firewall yang mengizinkan rentang CIDR NAT Private Service Connect untuk 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 mengaktifkan PSC.

Kemungkinan penyebab: Proxy tidak berfungsi. Tidak ada pemroses di port yang disediakan, 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

Analisis respons terhadap perintah:

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

    sudo su; cd / dan periksa apakah server Dante 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 disediakan, coba buka koneksi ke proxy tersebut dengan melakukan hal berikut:

    1. Instal klien PostgreSQL:

      sudo apt-get install postgresql-client.

    2. Menghubungkan 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. Menghubungkan 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 akar masalahnya. Penyebab utamanya dapat bervariasi bergantung pada penyiapan instance Cloud SQL.

    • Jika koneksi dibuka menggunakan telnet, tetapi mengalami hang di klien, kemungkinan masalahnya adalah pemilihan rute alamat IP bastion. Di VM, ketik ip route di terminal. Lihat apakah Anda dapat menemukan aturan pemilihan rute 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 Layanan Migrasi Database 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 Layanan Migrasi Database untuk lampiran layanan Anda (jika tertunda).

  • Tambahkan project yang meminta ke project yang diizinkan di 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 Oracle SCAN

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 tunggu habis.

Kemungkinan penyebab: Anda mungkin mencoba membuat konektivitas langsung ke database sumber Oracle SCAN. Database Migration Service tidak mendukung konektivitas langsung ke database yang 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.