Memigrasikan database Oracle lokal ke Amazon RDS for Oracle dengan menggunakan Impor Oracle Data Pump langsung melalui tautan database - AWS Prescriptive Guidance

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

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

  • 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.

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.

Migrasi beban penuh untuk database Oracle lokal.
  1. Instans Amazon RDS for Oracle terhubung ke database Oracle sumber lokal untuk melakukan migrasi muatan penuh melalui tautan database.

  2. AWS Database Migration Service (AWS DMS) menghubungkan ke database Oracle sumber lokal untuk melakukan replikasi berkelanjutan dengan menggunakan change data capture (CDC).

  3. Perubahan CDC diterapkan ke database Amazon RDS for Oracle.

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.

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:

TugasDeskripsiKeterampilan 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:

GRANT CONNECT to <migration_user>; GRANT DATAPUMP_EXP_FULL_DATABASE to <migration_user>; GRANT SELECT ANY TABLE to <migration_user>;
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:

  1. Konfigurasikan hak istimewa tambahan yang diperlukan untuk mengelola FLASHBACK selama migrasi Oracle Data Pump:

    GRANT FLASHBACK ANY TABLE to <migration_user>; GRANT FLASHBACK ARCHIVE ADMINISTER to <migration_user>;
  2. Untuk mengonfigurasi hak istimewa akun pengguna yang diperlukan pada sumber Oracle yang dikelola sendiri AWS DMS, lihat dokumentasinya.AWS DMS

  3. Untuk menyiapkan database sumber Oracle yang dikelola sendiri untuk CDC menggunakan AWS DMS, lihat dokumentasi.AWS DMS

DBA

Instal dan konfigurasikan SQL Developer.

Instal dan konfigurasikan SQL Developer untuk menghubungkan dan menjalankan kueri SQL pada basis data sumber dan target.

DBA, insinyur Migrasi

Hasilkan skrip untuk membuat ruang tabel.

Gunakan contoh query SQL berikut untuk menghasilkan script pada database sumber:

SELECT 'CREATE TABLESPACE ' tablespace_name ' DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE UNLIMITED;' from dba_tablespaces where tablespace_name not in ('SYSTEM', 'SYSAUX','TEMP','UNDOTBS1') order by 1;

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) (Akun Oracle diperlukan).

Script akan diterapkan pada database target.

DBA
TugasDeskripsiKeterampilan 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:

CREATE DATABASE LINK link2src CONNECT TO <migration_user_account> IDENTIFIED BY <password> USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=<dns or ip address of remote db>) (PORT=<listener port>))(CONNECT_DATA=(SID=<remote SID>)))';

Untuk memverifikasi konektivitas, jalankan perintah SQL berikut:

select * from dual@link2src;

Konektivitas berhasil jika responsnyaX.

DBA

Jalankan skrip untuk menyiapkan instance target.

Jalankan skrip yang dibuat sebelumnya untuk menyiapkan target Amazon RDS for Oracle instance:

  1. Ruang Meja

  2. Profil

  3. Peran

Ini membantu memastikan bahwa migrasi Oracle Data Pump dapat membuat skema dan objeknya.

DBA, insinyur Migrasi
TugasDeskripsiKeterampilan yang dibutuhkan

Migrasikan skema yang diperlukan.

Untuk memigrasikan skema yang diperlukan dari database lokal sumber ke instans Amazon RDS target, gunakan kode di bagian Informasi tambahan:

Untuk menyetel kinerja migrasi, Anda dapat menyesuaikan jumlah proses paralel dengan menjalankan perintah berikut:

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
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:

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');
DBA
TugasDeskripsiKeterampilan yang dibutuhkan

Tangkap SCN pada sumber database Oracle lokal.

Tangkap nomor perubahan sistem (SCN) pada sumber database Oracle lokal. Anda akan menggunakan SCN untuk impor beban penuh dan sebagai titik awal untuk replikasi CDC.

Untuk menghasilkan SCN saat ini pada database sumber, jalankan pernyataan SQL berikut:

SELECT current_scn FROM V$DATABASE;
DBA

Lakukan migrasi penuh skema.

Untuk memigrasikan skema (FULL LOAD) yang diperlukan dari database lokal sumber ke instans Amazon RDS target, lakukan hal berikut:

Dalam kode, ganti <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE> dengan SCN yang Anda ambil dari database sumber:

DBMS_DATAPUMP.SET_PARAMETER (handle => v_hdnl, name => 'FLASHBACK_SCN', value => <CURRENT_SCN_VALUE_IN_SOURCE_DATABASE>);

Untuk menyetel kinerja migrasi, Anda dapat menyesuaikan jumlah proses paralel:

DBMS_DATAPUMP.SET_PARALLEL (handle => v_hdnl, degree => 4);
DBA

Nonaktifkan pemicu di bawah skema yang dimigrasi.

Sebelum Anda memulai tugas AWS DMS khusus CDC, nonaktifkan skema di TRIGGERS bawah migrasi.

DBA

Kumpulkan statistik skema untuk meningkatkan kinerja.

Perintah Gather Schema Statistics mengembalikan statistik pengoptimal kueri Oracle yang dikumpulkan untuk objek database:

EXECUTE DBMS_STATS.GATHER_SCHEMA_STATS(ownname => '<schema_name>');

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 di. AWS DMS

DBA, insinyur Migrasi
TugasDeskripsiKeterampilan 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).

  1. Pastikan latensi sumber dan latensi target pada CloudWatch metrik Amazon AWS DMS tugas menunjukkan 0 detik.

  2. Hentikan tugas AWS DMS khusus CDC.

DBA

Aktifkan pemicu.

Aktifkan TRIGGERS yang Anda nonaktifkan sebelum tugas CDC dibuat.

DBA

AWS

Dokumentasi Oracle

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.