Mendiagnosis masalah dalam migrasi Oracle ke AlloyDB 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.

Jika terjadi error, status tugas migrasi akan berubah menjadi Failed, dan substatus akan menampilkan 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 akan 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 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.

Pastikan 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 tertutup, 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 INSERT operasi untuk memicu pembuatan log creation.

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.

Database Migration Service terhubung ke sumber Anda sebagai akun pengguna yang Anda konfigurasi 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 mengetahui informasi selengkapnya, lihat Mengonfigurasi database Oracle sumber.

Pesan error: Unable to connect to the destination database. Terjadi masalah saat menghubungkan ke database tujuan. Pastikan 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 secara otomatis menambahkan kunci utama 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 mungkin dimigrasikan di luar urutan. 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 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 data 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 sebagai akibat dari caching di server Oracle. Buat ulang pengguna database untuk memperbaiki masalah caching.
Tugas migrasi tetap berada dalam fase dump penuh dan tidak dilanjutkan 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-hal yang sebaiknya dicoba: Pastikan enable_proxy_protocol ditetapkan 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 akan dinonaktifkan secara default.

Waktu koneksi habis, koneksi ditolak

Menjalankan uji konektivitas gagal atau waktu koneksi habis. Hal ini kemungkinan besar disebabkan oleh pemilihan rute yang salah dikonfigurasi dalam penyiapan Private Service Connect. Ada beberapa alasan untuk masalah ini.

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-hal yang sebaiknya 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 AlloyDB untuk PostgreSQL yang tidak mengaktifkan PSC.

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

Hal-hal yang sebaiknya 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, proxy tidak berfungsi. Coba jalankan perintah berikut:

    sudo su; cd / dan periksa apakah server Dante diinstal dengan menjalankan sudo dpkg -s 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. Hubungkan 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 utamanya dapat bervariasi bergantung pada penyiapan instance AlloyDB untuk PostgreSQL.

    • Jika koneksi dibuka menggunakan telnet, tetapi terhenti di klien, kemungkinan masalahnya adalah pemilihan rute alamat IP bastion. Di VM Anda, ketik ip route di terminal. Lihat apakah Anda dapat menemukan aturan pemilihan rute yang merutekan koneksi ke alamat IP pribadi instance AlloyDB untuk PostgreSQL menggunakan sekunder nic (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-hal yang sebaiknya dicoba: Untuk mengatasi masalah ini, coba salah satu langkah berikut:

  • Di Google Cloud konsol, buka Private Service Connect.

    Buka Private Service Connect

    Di tab Published services, terima koneksi dari Database Migration Service untuk lampiran layanan Anda (jika koneksi tertunda).

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

    Jika hal 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 Oracle SCAN

Menjalankan uji konektivitas gagal atau waktu koneksi 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-hal yang sebaiknya 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 proxy terbalik seperti HAProxy.