Mengonversi Oracle ke Amazon RDS untuk PostgreSQL atau Amazon Aurora PostgreSQL - AWS Schema Conversion Tool

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengonversi Oracle ke Amazon RDS untuk PostgreSQL atau Amazon Aurora PostgreSQL

Saat Anda mengonversi database Oracle ke RDS untuk PostgreSQL atau Amazon Aurora PostgreSQL, perhatikan hal berikut.

Ketika mengkonversi objek sistem Oracle ke PostgreSQL, AWS SCT melakukan konversi seperti yang ditunjukkan pada tabel berikut.

Objek sistem Oracle Deskripsi Dikonversi objek PostgreSQL
V $ VERSI Menampilkan nomor versi komponen pustaka inti di Oracle Database aws_oracle_ext.v $ versi
V $ CONTOH Tampilan yang menunjukkan keadaan instance saat ini. aws_oracle_ext.v $ contoh

Anda dapat menggunakan AWS SCT untuk mengkonversi file Oracle SQL* Plus ke psql, yang merupakan front-end berbasis terminal untuk PostgreSQL. Untuk informasi selengkapnya, lihat Mengonversi aplikasi SQL menggunakanAWS SCT.

Hak istimewa untuk PostgreSQL sebagai database target

Untuk menggunakan PostgreSQL sebagai target, AWS SCT memerlukan hak istimewa. CREATE ON DATABASE Pastikan Anda memberikan hak istimewa ini untuk setiap database PostgreSQL target.

Untuk menggunakan sinonim publik yang dikonversi, ubah jalur pencarian default basis data ke"$user", public_synonyms, public.

Anda dapat menggunakan contoh kode berikut untuk membuat pengguna database dan memberikan hak istimewa.

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

Pada contoh sebelumnya, ganti user_name dengan nama pengguna Anda. Kemudian, ganti db_name dengan nama database target Anda. Terakhir, ganti kata sandi Anda dengan kata sandi yang aman.

Untuk menggunakan Amazon RDS untuk PostgreSQL sebagai target, AWS SCT memerlukan hak istimewa. rds_superuser

Di PostgreSQL, hanya pemilik skema atau superuser dapat menjatuhkan skema. Pemilik dapat menjatuhkan skema dan semua objek yang disertakan skema ini bahkan jika pemilik skema tidak memiliki beberapa objeknya.

Bila Anda menggunakan pengguna yang berbeda untuk mengkonversi dan menerapkan skema yang berbeda ke database target Anda, Anda bisa mendapatkan pesan kesalahan ketika tidak AWS SCT dapat menjatuhkan skema. Untuk menghindari pesan galat ini, gunakan superuser peran.

Pengaturan konversi Oracle ke PostgreSQL

Untuk mengedit pengaturan konversi Oracle ke PostgreSQL, pilih Pengaturan diAWS SCT, lalu pilih Pengaturan konversi. Dari daftar atas, pilih Oracle, lalu pilih Oracle - PostgreSQL. AWS SCTmenampilkan semua pengaturan yang tersedia untuk konversi Oracle ke PostgreSQL.

Pengaturan konversi Oracle ke PostgreSQL di AWS SCT termasuk pilihan untuk berikut:

  • Untuk membatasi jumlah komentar dengan item tindakan dalam kode yang dikonversi.

    Untuk Tambahkan komentar dalam kode yang dikonversi untuk item tindakan dengan tingkat keparahan yang dipilih dan lebih tinggi, pilih tingkat keparahan item tindakan. AWS SCTmenambahkan komentar dalam kode dikonversi untuk item tindakan keparahan yang dipilih dan lebih tinggi.

    Misalnya, untuk meminimalkan jumlah komentar dalam kode Anda yang dikonversi, pilih Kesalahan saja. Untuk menyertakan komentar untuk semua item tindakan dalam kode yang telah dikonversi, pilih Semua pesan.

  • Untuk memungkinkan AWS SCT untuk mengkonversi Oracle terwujud pandangan ke tabel atau tampilan terwujud pada PostgreSQL. Untuk konversi tampilan terwujud sebagai, pilih cara mengonversi tampilan terwujud sumber Anda.

  • Untuk bekerja dengan kode Oracle sumber Anda saat menyertakanTO_CHAR,TO_DATE, dan TO_NUMBER fungsi dengan parameter yang tidak didukung PostgreSQL. Secara default, AWS SCT mengemulasi penggunaan parameter ini dalam kode yang dikonversi.

    Ketika kode Oracle sumber Anda hanya menyertakan parameter yang didukung PostgreSQL, Anda dapat menggunakan PostgreSQLTO_CHAR,, dan fungsi asli. TO_DATE TO_NUMBER Dalam hal ini, kode yang dikonversi bekerja lebih cepat. Untuk menyertakan hanya parameter ini, pilih nilai berikut:

    • Fungsi TO_CHAR () tidak menggunakan string format khusus Oracle

    • Fungsi TO_DATE () tidak menggunakan string format khusus Oracle

    • Fungsi TO_NUMBER () tidak menggunakan string format khusus Oracle

  • Untuk mengatasi ketika sumber database Oracle menyimpan hanya nilai integer di kolom kunci primer atau asing dari tipe NUMBER data, AWS SCT dapat mengkonversi kolom ini ke tipe BIGINT data. Pendekatan ini meningkatkan kinerja kode Anda yang dikonversi. Untuk mengambil pendekatan ini, pilih Convert NUMBER primary/foreign key column ke BIGINT. Pastikan bahwa sumber Anda tidak menyertakan nilai floating point di kolom ini untuk menghindari kehilangan data.

  • Untuk melewati pemicu dan kendala yang dinonaktifkan dalam kode sumber Anda. Untuk melakukannya, pilih Abaikan pemicu dan batasan yang dinonaktifkan.

  • Untuk menggunakan AWS SCT untuk mengkonversi variabel string yang disebut sebagai SQL dinamis. Kode database Anda dapat mengubah nilai variabel string ini. Untuk memastikan bahwa AWS SCT selalu mengubah nilai terbaru dari variabel string ini, pilih Mengkonversi kode SQL dinamis yang dibuat dalam disebut rutinitas.

  • Untuk mengatasi PostgreSQL versi 10 dan sebelumnya tidak mendukung prosedur. Jika Anda atau pengguna Anda tidak terbiasa menggunakan prosedur di PostgreSQL, AWS SCT dapat mengonversi prosedur Oracle ke fungsi PostgreSQL. Untuk melakukannya, pilih Convert procedures to functions.

  • Untuk melihat informasi tambahan tentang item tindakan yang terjadi. Untuk melakukannya, Anda dapat menambahkan fungsi tertentu ke paket ekstensi dengan memilih Add on exception raise block untuk masalah migrasi dengan tingkat keparahan berikutnya. Kemudian pilih tingkat keparahan untuk meningkatkan pengecualian yang ditentukan pengguna.

  • Untuk bekerja dengan database Oracle sumber yang mungkin menyertakan kendala dengan nama yang dihasilkan secara otomatis. Jika kode sumber menggunakan nama-nama ini, pastikan Anda memilih Konversikan nama pembatas yang dihasilkan sistem menggunakan nama asli sumber. Jika kode sumber Anda menggunakan batasan ini tetapi tidak menggunakan namanya, kosongkan opsi ini untuk meningkatkan kecepatan konversi.

  • Untuk mengatasi apakah database dan aplikasi Anda berjalan di zona waktu yang berbeda. Secara default, AWS SCT mengemulasi zona waktu dalam kode yang dikonversi. Namun, Anda tidak memerlukan emulasi ini ketika database dan aplikasi Anda menggunakan zona waktu yang sama. Dalam hal ini, pilih Zona waktu di sisi klien cocok dengan zona waktu di server.

  • Untuk mengatasi apakah database sumber dan target Anda berjalan di zona waktu yang berbeda. Jika ya, fungsi yang mengemulasi fungsi Oracle SYSDATE bawaan mengembalikan nilai yang berbeda dibandingkan dengan fungsi sumber. Untuk memastikan bahwa sumber dan fungsi target Anda mengembalikan nilai yang sama, pilih Tetapkan zona waktu default untuk emulasi SYSDATE.

  • Untuk menggunakan fungsi dari ekstensi orafce dalam kode Anda dikonversi. Untuk melakukannya, untuk implementasi Gunakan orafce, pilih fungsi yang akan digunakan. Untuk informasi lebih lanjut tentang orafce, lihat orafce on. GitHub

Mengkonversi urutan Oracle

AWS SCTmengkonversi urutan dari Oracle ke PostgreSQL. Jika Anda menggunakan urutan untuk mempertahankan batasan integritas, pastikan bahwa nilai baru dari urutan yang dimigrasi tidak tumpang tindih dengan nilai yang ada.

Untuk mengisi urutan dikonversi dengan nilai terakhir dari database sumber
  1. Buka AWS SCT proyek Anda dengan Oracle sebagai sumbernya.

  2. Pilih Pengaturan, lalu pilih Pengaturan konversi.

  3. Dari daftar atas, pilih Oracle, lalu pilih Oracle - PostgreSQL. AWS SCTmenampilkan semua pengaturan yang tersedia untuk konversi Oracle ke PostgreSQL.

  4. Pilih Isi urutan yang dikonversi dengan nilai terakhir yang dihasilkan di sisi sumber.

  5. Memilih OK untuk menyimpan pengaturan dan menutup Pengaturan konversi kotak dialog.

Mengkonversi Oracle ROWID

Dalam database Oracle, pseudocolumn ROWID berisi alamat baris tabel. Pseudocolumn ROWID unik untuk Oracle, sehingga AWS SCT mengubah pseudocolumn ROWID ke kolom data di PostgreSQL. Dengan menggunakan konversi ini, Anda dapat menyimpan informasi ROWID.

Ketika mengkonversi pseudocolumn ROWID, AWS SCT dapat membuat kolom data dengan tipe data. bigint Jika tidak ada kunci utama ada, AWS SCT menetapkan kolom ROWID sebagai kunci utama. Jika kunci utama ada, AWS SCT atur kolom ROWID dengan kendala unik.

Jika kode database sumber Anda mencakup operasi dengan ROWID, yang tidak dapat Anda jalankan menggunakan tipe data numerik, AWS SCT dapat membuat kolom data dengan tipe character varying data.

Untuk membuat kolom data untuk Oracle ROWID untuk sebuah proyek
  1. Buka AWS SCT proyek Anda dengan Oracle sebagai sumbernya.

  2. Pilih Pengaturan, lalu pilih Pengaturan konversi.

  3. Dari daftar atas, pilih Oracle, lalu pilih Oracle - PostgreSQL. AWS SCTmenampilkan semua pengaturan yang tersedia untuk konversi Oracle ke PostgreSQL.

  4. Untuk Buat ID baris, lakukan salah satu dari berikut ini:

    • Pilih Hasilkan sebagai identitas untuk membuat kolom data numerik.

    • Pilih Hasilkan sebagai tipe domain karakter untuk membuat kolom data karakter.

  5. Memilih OK untuk menyimpan pengaturan dan menutup Pengaturan konversi kotak dialog.

Mengkonversi Oracle SQL dinamis

Oracle menyediakan dua cara untuk menerapkan SQL dinamis: menggunakan pernyataan EXECUTE IMMEDIATE atau memanggil prosedur dalam paket DBMS_SQL. Jika database Oracle sumber Anda menyertakan objek dengan SQL dinamis, gunakan AWS SCT untuk mengonversi pernyataan SQL dinamis Oracle ke PostgreSQL.

Untuk mengkonversi Oracle dynamic SQL ke PostgreSQL
  1. Buka AWS SCT proyek Anda dengan Oracle sebagai sumbernya.

  2. Pilih objek database yang menggunakan SQL dinamis dalam tampilan pohon sumber Oracle.

  3. Buka menu konteks (klik kanan) untuk objek, pilih Convert schema, dan setuju untuk mengganti objek jika ada. Screenshot berikut menunjukkan prosedur yang dikonversi di bawah prosedur Oracle dengan SQL dinamis.

    
                                Konversi SQL dinamis

Mengkonversi partisi Oracle

AWS SCTsaat ini mendukung metode partisi berikut:

  • Kisaran

  • Daftar

  • Rentang multicolumn

  • Hash

  • Komposit (daftar-daftar, range-list, daftar-range, daftar-hash, kisaran-hash, hash-hash)