Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasikan tabel partisi Oracle ke PostgreSQL menggunakan AWS DMS
Saurav Mishra dan Eduardo Valentim, Amazon Web Services
Ringkasan
Pola ini menjelaskan cara mempercepat pemuatan tabel yang dipartisi dari Oracle ke PostgreSQL dengan menggunakan AWS Database Migration Service (AWS DMS), yang tidak mendukung partisi asli. Basis data PostgreSQL target dapat diinstal di Amazon Elastic Compute Cloud (Amazon), atau dapat berupa Amazon Relational Database Service ( EC2Amazon RDS) untuk PostgreSQL atau instans DB Edisi Amazon Aurora PostgreSQL yang kompatibel.
Mengunggah tabel yang dipartisi mencakup langkah-langkah berikut:
Buat tabel induk yang mirip dengan tabel partisi Oracle, tetapi jangan sertakan partisi apa pun.
Buat tabel anak yang akan mewarisi dari tabel induk yang Anda buat di langkah 1.
Buat fungsi prosedur dan pemicu untuk menangani sisipan di tabel induk.
Namun, karena pemicu diaktifkan untuk setiap sisipan, beban awal menggunakan AWS DMS bisa sangat lambat.
Untuk mempercepat pemuatan awal dari Oracle ke PostgreSQL 9.0, pola ini membuat tugas AWS DMS terpisah untuk setiap partisi dan memuat tabel turunan yang sesuai. Anda kemudian membuat pemicu selama cutover.
PostgreSQL versi 10 mendukung partisi asli. Namun, Anda mungkin memutuskan untuk menggunakan partisi yang diwariskan dalam beberapa kasus. Untuk informasi selengkapnya, lihat bagian Informasi tambahan.
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif
Database Oracle sumber dengan tabel yang dipartisi
Database PostgreSQL di AWS
Versi produk
PostgreSQL 9.0
Arsitektur
Tumpukan teknologi sumber
Tabel yang dipartisi di Oracle
Tumpukan teknologi target
Tabel yang dipartisi di PostgreSQL (di Amazon, Amazon RDS untuk PostgreSQL, atau Aurora EC2 PostgreSQL)
Arsitektur target

Alat
AWS Database Migration Service (AWS DMS) membantu Anda memigrasikan penyimpanan data ke AWS Cloud atau antara kombinasi pengaturan cloud dan lokal.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat tabel di PostgreSQL. | Buat tabel induk dan anak yang sesuai di PostgreSQL dengan kondisi pemeriksaan yang diperlukan untuk partisi. | DBA |
Buat tugas AWS DMS untuk setiap partisi. | Sertakan kondisi filter partisi dalam tugas AWS DMS. Petakan partisi ke tabel anak PostgreSQL yang sesuai. | DBA |
Jalankan tugas AWS DMS menggunakan full load dan change data capture (CDC). | Pastikan bahwa | DBA |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Hentikan tugas replikasi. | Sebelum Anda menghentikan tugas, konfirmasikan bahwa sumber dan tujuan sinkron. | DBA |
Buat pemicu pada tabel induk. | Karena tabel induk akan menerima semua perintah insert dan update, buat pemicu yang akan merutekan perintah ini ke tabel turunan masing-masing berdasarkan kondisi partisi. | DBA |
Sumber daya terkait
Informasi tambahan
Meskipun PostgreSQL versi 10 mendukung partisi asli, Anda mungkin memutuskan untuk menggunakan partisi yang diwariskan untuk kasus penggunaan berikut:
Partisi memberlakukan aturan bahwa semua partisi harus memiliki kumpulan kolom yang sama dengan induknya, tetapi pewarisan tabel mendukung anak-anak yang memiliki kolom tambahan.
Warisan tabel mendukung beberapa pewarisan.
Partisi deklaratif hanya mendukung partisi daftar dan rentang. Dengan pewarisan tabel, Anda dapat membagi data sesuai keinginan. Namun, jika pengecualian kendala tidak dapat memangkas partisi secara efektif, kinerja kueri akan terganggu.
Beberapa operasi membutuhkan kunci yang lebih kuat saat menggunakan partisi deklaratif daripada saat menggunakan pewarisan tabel. Misalnya, menambahkan atau menghapus partisi ke atau dari tabel yang dipartisi memerlukan
ACCESS EXCLUSIVEkunci pada tabel induk, sedangkanSHARE UPDATE EXCLUSIVEkunci cukup untuk pewarisan reguler.
Saat Anda menggunakan partisi pekerjaan terpisah, Anda juga dapat memuat ulang partisi jika ada masalah validasi AWS DMS. Untuk kontrol kinerja dan replikasi yang lebih baik, jalankan tugas pada instance replikasi terpisah.