Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Bermigrasi dari Oracle ke Amazon RDS untuk Postgre atau Amazon SQL Aurora Postgre dengan SQL AWS Schema Conversion Tool
Saat Anda mengonversi database Oracle ke RDS Postgre atau Amazon SQL Aurora PostgreSQL, perhatikan hal-hal berikut.
Topik
Saat mengkonversi objek sistem Oracle ke PostgreSQL, AWS SCT melakukan konversi seperti yang ditunjukkan pada tabel berikut.
Objek sistem Oracle | Deskripsi | Objek Postgre SQL yang dikonversi |
---|---|---|
V $ VERSION | Menampilkan nomor versi komponen pustaka inti di Oracle Database | aws_oracle_ext.v $versi |
V $ INSTANCE | Tampilan yang menunjukkan keadaan instance saat ini. | aws_oracle_ext.v $contoh |
Anda dapat menggunakan AWS SCT untuk mengonversi file Oracle SQL *Plus ke psql, yang merupakan front-end berbasis terminal ke Postgre. SQL Untuk informasi selengkapnya, lihat Mengonversi aplikasi menggunakan SQL AWS SCT.
Hak istimewa untuk Postgre SQL sebagai basis data target
Untuk menggunakan Postgre SQL sebagai target, AWS SCT membutuhkan hak istimewa. CREATE ON DATABASE
Pastikan Anda memberikan hak istimewa ini untuk setiap basis data SQL Postgre target.
Untuk menggunakan sinonim publik yang dikonversi, ubah jalur pencarian default database menjadi"$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 DATABASEdb_name
TOuser_name
; ALTER DATABASEdb_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. Akhirnya, ganti your_password
dengan kata sandi yang aman.
Untuk menggunakan Amazon RDS untuk Postgre SQL sebagai target, AWS SCT membutuhkan hak istimewa. rds_superuser
Di PostgreSQL, hanya pemilik skema atau a yang superuser
dapat menjatuhkan skema. Pemilik dapat menjatuhkan skema dan semua objek yang disertakan skema ini bahkan jika pemilik skema tidak memiliki beberapa objeknya.
Saat Anda menggunakan pengguna yang berbeda untuk mengonversi dan menerapkan skema yang berbeda ke basis data target Anda, Anda bisa mendapatkan pesan kesalahan saat tidak AWS SCT dapat menjatuhkan skema. Untuk menghindari pesan kesalahan ini, gunakan superuser
peran.
Pengaturan konversi Oracle ke Postgre SQL
Untuk mengedit pengaturan SQL konversi Oracle ke Postgre, pilih Pengaturan di AWS SCT, lalu pilih Pengaturan konversi. Dari daftar atas, pilih Oracle, dan kemudian pilih Oracle - Postgre. SQL AWS SCT menampilkan semua pengaturan yang tersedia untuk konversi Oracle ke PostgreSQL.
Pengaturan SQL konversi Oracle ke Postgre AWS SCT termasuk opsi untuk yang berikut:
-
Untuk membatasi jumlah komentar dengan item tindakan dalam kode yang dikonversi.
Untuk Tambahkan komentar di kode yang dikonversi untuk item tindakan dengan tingkat keparahan yang dipilih dan lebih tinggi, pilih tingkat keparahan item tindakan. AWS SCT menambahkan komentar dalam kode yang dikonversi untuk item tindakan dengan tingkat keparahan yang dipilih dan lebih tinggi.
Misalnya, untuk meminimalkan jumlah komentar dalam kode yang dikonversi, pilih Error only. Untuk menyertakan komentar untuk semua item tindakan dalam kode yang dikonversi, pilih Semua pesan.
-
Untuk memungkinkan AWS SCT untuk mengonversi tampilan terwujud Oracle ke tabel atau tampilan terwujud di Postgre. SQL Untuk konversi tampilan terwujud sebagai, pilih cara mengonversi tampilan terwujud sumber Anda.
-
Untuk bekerja dengan kode Oracle sumber Anda saat menyertakan,
TO_CHAR
TO_DATE
, danTO_NUMBER
fungsi dengan parameter yang SQL tidak didukung Postgre. Secara default, AWS SCT mengemulasi penggunaan parameter ini dalam kode yang dikonversi.Ketika kode Oracle sumber Anda hanya menyertakan parameter yang SQL didukung Postgre, Anda dapat menggunakan Postgre SQL
TO_CHAR
asli,, dan fungsi.TO_DATE
TO_NUMBER
Dalam hal ini, kode yang dikonversi bekerja lebih cepat. Untuk memasukkan hanya parameter ini, pilih nilai berikut:Fungsi TO_ CHAR () tidak menggunakan string pemformatan khusus Oracle
Fungsi TO_ DATE () tidak menggunakan string pemformatan khusus Oracle
Fungsi TO_ NUMBER () tidak menggunakan string pemformatan khusus Oracle
-
Untuk mengatasi ketika database Oracle sumber Anda hanya menyimpan nilai integer di kolom kunci primer atau asing dari tipe
NUMBER
data, AWS SCT dapat mengonversi kolom ini ke tipeBIGINT
data. Pendekatan ini meningkatkan kinerja kode Anda yang dikonversi. Untuk mengambil pendekatan ini, pilih Ubah NUMBER kolom kunci utama/asing menjadi kolom kunci BIGINT utama. Pastikan 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 kendala yang dinonaktifkan.
-
Untuk digunakan AWS SCT untuk mengkonversi variabel string yang disebut sebagai dinamisSQL. Kode database Anda dapat mengubah nilai variabel string ini. Untuk memastikan bahwa AWS SCT selalu mengonversi nilai terbaru dari variabel string ini, pilih Konversi SQL kode dinamis yang dibuat dalam rutinitas yang disebut.
-
Untuk mengatasi Postgre SQL 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 Postgre. SQL Untuk melakukannya, pilih Konversi prosedur ke fungsi.
-
Untuk melihat informasi tambahan tentang item tindakan yang terjadi. Untuk melakukannya, Anda dapat menambahkan fungsi tertentu ke paket ekstensi dengan memilih Tambah pada blok peningkatan pengecualian 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 Anda menggunakan nama-nama ini, pastikan Anda memilih Konversi nama kendala yang dihasilkan sistem menggunakan nama asli sumber. Jika kode sumber Anda menggunakan batasan ini tetapi tidak menggunakan namanya, hapus 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 basis data sumber dan target Anda berjalan di zona waktu yang berbeda. Jika mereka melakukannya, fungsi yang mengemulasi fungsi Oracle
SYSDATE
bawaan mengembalikan nilai yang berbeda dibandingkan dengan fungsi sumber. Untuk memastikan bahwa fungsi sumber dan target Anda mengembalikan nilai yang sama, pilih Setel zona waktu default untuk SYSDATE emulasi. -
Untuk menggunakan fungsi dari ekstensi orafce dalam kode konversi Anda. Untuk melakukannya, untuk implementasi Use orafce, pilih fungsi yang akan digunakan. Untuk informasi lebih lanjut tentang orafce, lihat orafce
di. GitHub
Mengonversi urutan Oracle
AWS SCT mengubah urutan dari Oracle ke Postgre. SQL Jika Anda menggunakan urutan untuk mempertahankan batasan integritas, pastikan nilai baru dari urutan yang dimigrasi tidak tumpang tindih dengan nilai yang ada.
Untuk mengisi urutan yang dikonversi dengan nilai terakhir dari database sumber
-
Buka AWS SCT proyek Anda dengan Oracle sebagai sumbernya.
-
Pilih Pengaturan, lalu pilih Pengaturan konversi.
-
Dari daftar atas, pilih Oracle, dan kemudian pilih Oracle - Postgre. SQL AWS SCT menampilkan semua pengaturan yang tersedia untuk konversi Oracle ke PostgreSQL.
-
Pilih Isi urutan yang dikonversi dengan nilai terakhir yang dihasilkan di sisi sumber.
-
Pilih OK untuk menyimpan pengaturan dan menutup kotak dialog Pengaturan konversi.
Mengonversi Oracle ROWID
Dalam database Oracle, ROWID pseudocolumn berisi alamat baris tabel. ROWIDPseudocolumn unik untuk Oracle, jadi AWS SCT mengkonversi ROWID pseudocolumn ke kolom data di Postgre. SQL Dengan menggunakan konversi ini, Anda dapat menyimpan ROWID informasi.
Saat mengkonversi ROWID pseudocolumn, AWS SCT dapat membuat kolom data dengan tipe data. bigint
Jika tidak ada kunci primer, AWS SCT tetapkan ROWID kolom sebagai kunci utama. Jika kunci primer ada, AWS SCT atur ROWID kolom dengan kendala unik.
Jika kode database sumber Anda menyertakan operasi denganROWID, 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
-
Buka AWS SCT proyek Anda dengan Oracle sebagai sumbernya.
-
Pilih Pengaturan, lalu pilih Pengaturan konversi.
-
Dari daftar atas, pilih Oracle, dan kemudian pilih Oracle - Postgre. SQL AWS SCT menampilkan semua pengaturan yang tersedia untuk konversi Oracle ke PostgreSQL.
-
Untuk Menghasilkan ID baris, lakukan salah satu hal berikut:
-
Pilih Hasilkan sebagai identitas untuk membuat kolom data numerik.
-
Pilih Hasilkan sebagai tipe domain karakter untuk membuat kolom data karakter.
-
-
Pilih OK untuk menyimpan pengaturan dan menutup kotak dialog Pengaturan konversi.
Mengonversi Oracle Dynamic SQL
Oracle menyediakan dua cara untuk menerapkan dinamisSQL: menggunakan EXECUTE IMMEDIATE pernyataan atau prosedur panggilan dalam SQL paket DBMS _. Jika database Oracle sumber Anda menyertakan objek dengan dinamisSQL, gunakan AWS SCT untuk mengonversi SQL pernyataan dinamis Oracle ke Postgre. SQL
Untuk mengonversi Oracle dynamic SQL ke Postgre SQL
Buka AWS SCT proyek Anda dengan Oracle sebagai sumbernya.
Pilih objek database yang menggunakan dinamis SQL dalam tampilan pohon sumber Oracle.
Buka menu konteks (klik kanan) untuk objek, pilih Convert schema, dan setuju untuk mengganti objek jika ada. Tangkapan layar berikut menunjukkan prosedur yang dikonversi di bawah prosedur Oracle dengan dinamisSQL.
Mengonversi partisi Oracle
AWS SCT saat ini mendukung metode partisi berikut:
-
Kisaran
-
Daftar
-
Rentang multicolumn
-
Hash
-
Komposit (daftar-daftar, daftar rentang, daftar-rentang, daftar-hash, rentang-hash, hash hash)