Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memigrasikan database Oracle lokal ke Amazon RDS for Oracle dengan menggunakan Impor Oracle Data Pump langsung melalui tautan database
Rizwan Wangde, Amazon Web Services
Ringkasan
Banyak pola mencakup migrasi database Oracle lokal ke Amazon Relational Database Service (Amazon RDS) untuk Oracle dengan menggunakan Oracle Data Pump, utilitas Oracle asli yang merupakan cara yang disukai untuk memigrasikan beban kerja Oracle yang besar. Pola-pola ini biasanya melibatkan mengekspor skema aplikasi atau tabel ke dalam file dump, mentransfer file dump ke direktori database di Amazon RDS for Oracle, dan kemudian mengimpor skema aplikasi dan data dari file dump.
Dengan menggunakan pendekatan itu, migrasi dapat memakan waktu lebih lama tergantung pada ukuran data dan waktu yang diperlukan untuk mentransfer file dump ke instans Amazon RDS. Selain itu, file dump berada pada volume Amazon Elastic Block Store (Amazon EBS) instans Amazon RDS, yang harus cukup besar untuk database dan file dump. Ketika file dump dihapus setelah impor, ruang kosong tidak dapat diambil, sehingga Anda terus membayar untuk ruang yang tidak digunakan.
Pola ini mengurangi masalah tersebut dengan melakukan impor langsung pada instans Amazon RDS dengan menggunakan Oracle Data Pump API (DBMS_DATAPUMP
) melalui tautan database. Pola ini memulai jalur ekspor dan impor simultan antara basis data sumber dan target. Pola ini tidak memerlukan ukuran volume EBS untuk file dump karena tidak ada file dump yang dibuat atau disimpan pada volume. Pendekatan ini menghemat biaya bulanan ruang disk yang tidak digunakan.
Prasyarat dan batasan
Prasyarat
Akun Amazon Web Services (AWS) yang aktif.
Virtual Private Cloud (VPC) dikonfigurasi dengan subnet pribadi di setidaknya dua Availability Zone, untuk menyediakan infrastruktur jaringan untuk instans Amazon RDS.
Database Oracle di pusat data lokal, atau dikelola sendiri di Amazon Elastic Compute Cloud (Amazon). EC2
Instans Amazon RDS for Oracle yang ada di satu Availability Zone. Menggunakan Availability Zone tunggal meningkatkan kinerja penulisan selama migrasi. Penerapan multi-AZ dapat diaktifkan 24-48 jam sebelum cutover.
Solusi ini juga dapat menggunakan Amazon RDS Custom untuk Oracle sebagai target.
AWS Direct Connect (direkomendasikan untuk database berukuran besar).
Konektivitas jaringan dan aturan firewall di tempat yang dikonfigurasi untuk mengizinkan koneksi masuk dari instans Amazon RDS ke database Oracle lokal.
Batasan
Batas ukuran database di Amazon RDS for Oracle adalah 64 tebibytes (TiB) per Desember 2022.
Ukuran maksimum satu file pada instans Amazon RDS for Oracle DB adalah 16 TiB. Ini penting untuk diketahui karena Anda mungkin perlu menyebarkan tabel di beberapa ruang tabel.
Versi produk
Database sumber: Oracle Database versi 10g Rilis 1 dan yang lebih baru.
Basis data target: Untuk daftar terbaru versi dan edisi yang didukung di Amazon RDS, lihat Amazon RDS for Oracle dalam dokumentasi AWS.
Arsitektur
Tumpukan teknologi sumber
Database Oracle yang dikelola sendiri di tempat atau di cloud
Tumpukan teknologi target
Amazon RDS for Oracle atau Amazon RDS Kustom untuk Oracle
Arsitektur target
Diagram berikut menunjukkan arsitektur untuk bermigrasi dari database Oracle lokal ke Amazon RDS for Oracle dalam lingkungan Single-AZ. Arah panah menggambarkan aliran data dalam arsitektur. Diagram tidak menunjukkan komponen apa yang memulai koneksi.

Instans Amazon RDS for Oracle terhubung ke database Oracle sumber lokal untuk melakukan migrasi muatan penuh melalui tautan database.
AWS Database Migration Service (AWS DMS) menghubungkan ke database Oracle sumber lokal untuk melakukan replikasi berkelanjutan dengan menggunakan change data capture (CDC).
Perubahan CDC diterapkan ke database Amazon RDS for Oracle.
Alat
Layanan AWS
AWS Database Migration Service (AWS DMS) membantu Anda memigrasikan penyimpanan data ke dalam AWS Cloud atau di antara kombinasi pengaturan cloud dan lokal. Pola ini menggunakan CDC dan data Replikasi hanya mengubah pengaturan.
AWS Direct Connectmenghubungkan jaringan internal Anda ke AWS Direct Connect lokasi melalui kabel serat optik Ethernet standar. Dengan koneksi ini, Anda dapat membuat antarmuka virtual langsung ke publik Layanan AWS sambil melewati penyedia layanan internet di jalur jaringan Anda.
Amazon Relational Database Service membantu Anda menyiapkan, mengoperasikan, dan menskalakan database relasional Oracle di AWS Cloud.
Alat-alat lainnya
Oracle Data Pump
membantu Anda memindahkan data dan metadata dari satu database ke database lainnya dengan kecepatan tinggi. Alat klien seperti Oracle Instant Client
atau SQL Developer digunakan untuk menghubungkan dan menjalankan query SQL pada database.
Praktik terbaik
Meskipun AWS Direct Connect menggunakan koneksi jaringan pribadi khusus antara jaringan lokal dan AWS, pertimbangkan opsi berikut untuk keamanan tambahan dan enkripsi data untuk data dalam perjalanan:
Jaringan pribadi virtual (VPN) yang menggunakan AWS Site-to-Site VPN atau koneksi IPsec VPN dari jaringan lokal ke AWS jaringan
Enkripsi Jaringan Asli Oracle Database
yang dikonfigurasi pada database Oracle lokal Enkripsi menggunakan TLS
Epik
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Siapkan konektivitas jaringan dari database target ke database sumber. | Konfigurasikan jaringan lokal dan firewall untuk mengizinkan koneksi masuk dari instans Amazon RDS target ke database Oracle sumber lokal. | Administrator jaringan, Insinyur keamanan |
Buat pengguna database dengan hak istimewa yang sesuai. | Buat pengguna database di database Oracle sumber lokal dengan hak istimewa untuk memigrasikan data antara sumber dan target menggunakan Oracle Data Pump:
| DBA |
Siapkan database sumber lokal untuk migrasi AWS DMS CDC. | (Opsional) Siapkan database Oracle sumber lokal untuk migrasi AWS DMS CDC setelah menyelesaikan Oracle Data Pump Full Load:
| DBA |
Instal dan konfigurasikan SQL Developer. | Instal dan konfigurasikan SQL Developer | DBA, insinyur Migrasi |
Hasilkan skrip untuk membuat ruang tabel. | Gunakan contoh query SQL berikut untuk menghasilkan script pada database sumber:
Script akan diterapkan pada database target. | DBA |
Hasilkan skrip untuk membuat pengguna, profil, peran, dan hak istimewa. | Untuk menghasilkan skrip untuk membuat pengguna database, profil, peran, dan hak istimewa, gunakan skrip dari dokumen Dukungan Oracle Cara Mengekstrak DDL untuk Pengguna termasuk Hak Istimewa dan Peran Menggunakan dbms_metadata.get_ddl (Doc ID 2739952.1 Script akan diterapkan pada database target. | DBA |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Buat tautan database ke database sumber dan verifikasi konektivitas. | Untuk membuat link database ke database sumber lokal, Anda dapat menggunakan perintah contoh berikut:
Untuk memverifikasi konektivitas, jalankan perintah SQL berikut:
Konektivitas berhasil jika responsnya | DBA |
Jalankan skrip untuk menyiapkan instance target. | Jalankan skrip yang dibuat sebelumnya untuk menyiapkan target Amazon RDS for Oracle instance:
Ini membantu memastikan bahwa migrasi Oracle Data Pump dapat membuat skema dan objeknya. | DBA, insinyur Migrasi |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Migrasikan skema yang diperlukan. |
Untuk menyetel kinerja migrasi, Anda dapat menyesuaikan jumlah proses paralel dengan menjalankan perintah berikut:
| DBA |
Kumpulkan statistik skema untuk meningkatkan kinerja. | Perintah Gather Schema Statistics mengembalikan statistik pengoptimal kueri Oracle yang dikumpulkan untuk objek database. Dengan menggunakan informasi ini, pengoptimal dapat memilih rencana eksekusi terbaik untuk kueri apa pun terhadap objek ini:
| DBA |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Tangkap SCN pada sumber database Oracle lokal. | Tangkap nomor perubahan sistem (SCN) Untuk menghasilkan SCN saat ini pada database sumber, jalankan pernyataan SQL berikut:
| DBA |
Lakukan migrasi penuh skema. | Untuk memigrasikan skema (
Dalam kode, ganti
Untuk menyetel kinerja migrasi, Anda dapat menyesuaikan jumlah proses paralel:
| DBA |
Nonaktifkan pemicu di bawah skema yang dimigrasi. | Sebelum Anda memulai tugas AWS DMS khusus CDC, nonaktifkan skema di | DBA |
Kumpulkan statistik skema untuk meningkatkan kinerja. | Perintah Gather Schema Statistics mengembalikan statistik pengoptimal kueri Oracle yang dikumpulkan untuk objek database:
Dengan menggunakan informasi ini, pengoptimal dapat memilih rencana eksekusi terbaik untuk kueri apa pun terhadap objek ini. | DBA |
Gunakan AWS DMS untuk melakukan replikasi berkelanjutan dari sumber ke target. | Gunakan AWS DMS untuk melakukan replikasi berkelanjutan dari database Oracle sumber ke instans Amazon RDS for Oracle target. Untuk informasi selengkapnya, lihat Membuat tugas untuk replikasi berkelanjutan menggunakan AWS DMS dan posting blog Cara bekerja dengan dukungan CDC asli | DBA, insinyur Migrasi |
Tugas | Deskripsi | Keterampilan yang dibutuhkan |
---|---|---|
Aktifkan Multi-AZ pada instans 48 jam sebelum cutover. | Jika ini adalah instans produksi, sebaiknya aktifkan penerapan Multi-AZ di instans Amazon RDS untuk memberikan manfaat ketersediaan tinggi (HA) dan pemulihan bencana (DR). | DBA, insinyur Migrasi |
Hentikan tugas AWS DMS khusus CDC (jika CDC dihidupkan). |
| DBA |
Aktifkan pemicu. | Aktifkan | DBA |
Sumber daya terkait
AWS
Dokumentasi Oracle
Informasi tambahan
Kode 1: Migrasi beban penuh saja, skema aplikasi tunggal
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Kode 2: Migrasi beban penuh saja, beberapa skema aplikasi
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Kode 3: Migrasi beban penuh sebelum tugas khusus CDC, skema aplikasi tunggal
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE( handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'SCHEMA_EXPR','IN (''<schema_name>'')'); -- To migrate one selected schema DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Kode 4: Migrasi beban penuh sebelum tugas khusus CDC, beberapa skema aplikasi
DECLARE v_hdnl NUMBER; BEGIN v_hdnl := DBMS_DATAPUMP.OPEN (operation => 'IMPORT', job_mode => 'SCHEMA', remote_link => '<DB LINK Name to Source Database>', job_name => null); DBMS_DATAPUMP.ADD_FILE (handle => v_hdnl, filename => 'import_01.log', directory => 'DATA_PUMP_DIR', filetype => dbms_datapump.ku$_file_type_log_file); DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'SCHEMA_LIST', '''<SCHEMA_1>'',''<SCHEMA_2>'', ''<SCHEMA_3>'''); -- To migrate multiple schemas DBMS_DATAPUMP.METADATA_FILTER (v_hdnl, 'EXCLUDE_PATH_EXPR','IN (''STATISTICS'')'); -- To prevent gathering Statistics during the import DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>); -- SCN required for AWS DMS CDC only task. DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4); -- Number of parallel processes performing export and import DBMS_DATAPUMP.START_JOB(v_hdnl); END; /
Skenario di mana pendekatan migrasi campuran dapat bekerja lebih baik
Dalam skenario langka di mana database sumber berisi tabel dengan jutaan baris dan kolom LOBSEGMENT berukuran sangat besar, pola ini akan memperlambat migrasi. Oracle bermigrasi LOBSEGMENTs melalui tautan jaringan satu per satu. Ini mengekstrak satu baris (bersama dengan data kolom LOB) dari tabel sumber, dan menyisipkan baris ke dalam tabel target, mengulangi proses sampai semua baris dimigrasikan. Oracle Data Pump melalui tautan database tidak mendukung beban massal atau mekanisme pemuatan jalur langsung untuk LOBSEGMENTs.
Dalam situasi ini, kami merekomendasikan yang berikut:
Lewati tabel yang diidentifikasi selama migrasi Oracle Data Pump dengan menambahkan filter metadata berikut:
dbms_datapump.metadata_filter(handle =>h1, name=>'NAME_EXPR', value => 'NOT IN (''TABLE_1'',''TABLE_2'')');
Gunakan AWS DMS tugas (migrasi muatan penuh, dengan replikasi CDC jika diperlukan) untuk memigrasikan tabel yang diidentifikasi. AWS DMS akan mengekstrak beberapa baris dari database Oracle sumber, dan memasukkannya dalam batch ke instance Amazon RDS target, yang meningkatkan kinerja.