Gunakan Data Transmission Service (DTS) untuk memigrasikan data dari database Oracle yang dikelola sendiri ke instans AnalyticDB for PostgreSQL. DTS mendukung migrasi skema, migrasi data penuh, dan migrasi data inkremental sehingga Anda dapat melakukan migrasi dengan downtime minimal.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki database Oracle yang dikelola sendiri yang menjalankan versi 9i, 10g, 11g, 12c, 18c, atau 19c.
Database Oracle yang berjalan dalam Mode ARSIPLOG — DTS menggunakan LogMiner untuk membaca file log redo yang diarsipkan dan menangkap perubahan inkremental. Tanpa mode ini diaktifkan, migrasi data inkremental tidak dapat dilakukan.
Mengaktifkan pencatatan tambahan, termasuk
SUPPLEMENTAL_LOG_DATA_PKdanSUPPLEMENTAL_LOG_DATA_UI— hal ini memastikan LogMiner menangkap cukup data kolom untuk merekonstruksi operasi DML secara akurat. Untuk detailnya, lihat Pencatatan Tambahan.Sebuah instance AnalyticDB for PostgreSQL tujuan telah dibuat. Untuk detail selengkapnya, lihat Create an instance.
Penagihan
| Jenis migrasi | Biaya konfigurasi tugas | Biaya lalu lintas Internet |
|---|---|---|
| Migrasi skema dan migrasi data penuh | Gratis | Dikenakan biaya hanya jika data dimigrasikan dari Alibaba Cloud melalui Internet. Lihat Ikhtisar penagihan. |
| Migrasi data inkremental | Dikenakan biaya. Lihat Ikhtisar penagihan. |
Jenis migrasi
| Jenis migrasi | Deskripsi |
|---|---|
| Migrasi skema | DTS memigrasikan skema dari sumber ke database tujuan, termasuk tabel, indeks, batasan, fungsi, sekuens, dan tampilan. Catatan Karena sumber dan tujuan merupakan database heterogen, DTS tidak menjamin konsistensi skema setelah migrasi. Evaluasi dampak konversi tipe data sebelum melanjutkan. Lihat Pemetaan tipe data antar database heterogen. Untuk tabel partisi, DTS mengabaikan definisi partisi — definisikan partisi secara manual di database tujuan. |
| Migrasi data penuh | DTS memigrasikan semua data historis dari sumber ke database tujuan. Jangan lakukan operasi DDL pada objek yang sedang dimigrasikan selama migrasi skema atau migrasi data penuh, karena hal ini dapat menyebabkan kegagalan migrasi. |
| Migrasi data inkremental | Setelah migrasi data penuh selesai, DTS membaca file log redo dari database Oracle sumber dan mereplikasi perubahan ke tujuan secara real time. Operasi DML yang didukung: INSERT, UPDATE, DELETE. Operasi DDL yang didukung: ADD COLUMN saja. Migrasi inkremental memungkinkan aplikasi Anda tetap berjalan di database sumber selama proses migrasi berlangsung. |
Catatan penggunaan
Selama migrasi data penuh, DTS menggunakan resource baca dan tulis di kedua database (sumber dan tujuan), yang dapat meningkatkan beban server. Jalankan migrasi selama jam sepi untuk mengurangi dampaknya.
Jika tugas migrasi data gagal dan secara otomatis dilanjutkan oleh DTS, hentikan atau lepas tugas tersebut sebelum mengalihkan beban kerja ke database tujuan. Jika tidak, data dari sumber akan menimpa data di tujuan setelah tugas dilanjutkan.
Jika database Oracle yang dikelola sendiri menggunakan arsitektur Real Application Cluster (RAC) dan terhubung ke DTS melalui virtual private cloud (VPC) Alibaba Cloud, hubungkan alamat IP Single Client Access Name (SCAN) dari Oracle RAC dan alamat IP virtual (VIP) dari setiap node ke VPC, serta konfigurasikan entri rute untuk memastikan tugas DTS berjalan sesuai harapan. Lihat Hubungkan pusat data ke DTS menggunakan VPN Gateway.
Saat mengonfigurasi database Oracle sumber di konsol DTS, tentukan alamat IP SCAN dari Oracle RAC sebagai titik akhir database atau alamat IP.
Izin yang diperlukan untuk akun database
| Database | Migrasi skema | Migrasi data penuh | Migrasi data inkremental |
|---|---|---|---|
| Database Oracle yang dikelola sendiri | Izin pemilik skema | Izin pemilik skema | Administrator basis data (DBA) |
| AnalyticDB for PostgreSQL | Izin baca dan tulis | Izin baca dan tulis | Izin baca dan tulis |
Untuk membuat akun database dan memberikan izin, lihat:
Database Oracle yang dikelola sendiri: CREATE USER dan GRANT
Instans AnalyticDB for PostgreSQL: Buat akun database
Jika Anda memerlukan migrasi data inkremental tetapi tidak dapat memberikan izin DBA kepada akun database, berikan izin detail halus sebagai gantinya. Lihat bagian berikut.
Aktifkan pencatatan dan berikan izin detail halus (ketika izin DBA tidak tersedia)
Jika Anda tidak dapat memberikan izin DBA ke akun database Oracle, ikuti langkah-langkah berikut untuk mengaktifkan pencatatan arsip dan pencatatan tambahan, lalu berikan izin minimum yang diperlukan.
Langkah 1: Aktifkan pencatatan
| Jenis | Pernyataan |
|---|---|
| Pencatatan arsip | shutdown immediate;startup mount;alter database archivelog;alter database open;archive log list; |
| Pencatatan tambahan (tingkat database — direkomendasikan untuk stabilitas tugas DTS) | alter database add supplemental log data;alter database add supplemental log data (primary key,unique index) columns; |
| Pencatatan tambahan (tingkat tabel — mengurangi penggunaan disk pada sumber) | alter database add supplemental log data;Kemudian untuk setiap tabel, jalankan salah satu: alter table table_name add supplemental log data (primary key) columns;atau: alter table tb_name add supplemental log data (all) columns; |
| Pencatatan paksa | alter database force logging; |
Langkah 2: Berikan izin detail halus
Temukan versi dan arsitektur Oracle Anda pada tabel di bawah ini, lalu jalankan blok SQL yang sesuai.
| Oracle database | Buka |
|---|---|
| Versi 9i, 10g, atau 11g | Versi Oracle 9i hingga 11g |
| Versi 12c hingga 19c, arsitektur multitenan (CDB/PDB) | Versi Oracle 12c hingga 19c — arsitektur multitenan |
| Versi 12c hingga 19c, arsitektur non-multitenan (non-CDB) | Versi Oracle 12c hingga 19c — arsitektur non-multitenan |
Versi Oracle 9i hingga 11g
-- Buat akun database bernama rdsdt_dtsacct dan berikan izin ke akun tersebut.
create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant resource to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct;
grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;
-- hak akses v$log
grant select on v_$log to rdsdt_dtsacct;
-- hak akses v$logfile
grant select on v_$logfile to rdsdt_dtsacct;
-- hak akses v$archived_log
grant select on v_$archived_log to rdsdt_dtsacct;
-- hak akses v$parameter
grant select on v_$parameter to rdsdt_dtsacct;
-- hak akses v$database
grant select on v_$database to rdsdt_dtsacct;
-- hak akses v$active_instances
grant select on v_$active_instances to rdsdt_dtsacct;
-- hak akses v$instance
grant select on v_$instance to rdsdt_dtsacct;
-- hak akses v$logmnr_contents
grant select on v_$logmnr_contents to rdsdt_dtsacct;
-- Tabel sistem
grant select on sys.USER$ to rdsdt_dtsacct;
grant select on SYS.OBJ$ to rdsdt_dtsacct;
grant select on SYS.COL$ to rdsdt_dtsacct;
grant select on SYS.IND$ to rdsdt_dtsacct;
grant select on SYS.ICOL$ to rdsdt_dtsacct;
grant select on SYS.CDEF$ to rdsdt_dtsacct;
grant select on SYS.CCOL$ to rdsdt_dtsacct;
grant select on SYS.TABPART$ to rdsdt_dtsacct;
grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;
grant select_catalog_role TO rdsdt_dtsacct;Versi Oracle 12c hingga 19c — arsitektur multitenan
Jalankan SQL berikut dalam dua tahap: pertama di database yang dapat dicolokkan (PDB), lalu di root database kontainer (CDB).
Tahap 1: Beralih ke PDB dan berikan izin
-- Beralih ke database yang dapat dicolokkan (PDB).
ALTER SESSION SET container = ORCLPDB1;
create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant resource to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;
-- hak akses v$log
grant select on v_$log to rdsdt_dtsacct;
-- hak akses v$logfile
grant select on v_$logfile to rdsdt_dtsacct;
-- hak akses v$archived_log
grant select on v_$archived_log to rdsdt_dtsacct;
-- hak akses v$parameter
grant select on v_$parameter to rdsdt_dtsacct;
-- hak akses v$database
grant select on v_$database to rdsdt_dtsacct;
-- hak akses v$active_instances
grant select on v_$active_instances to rdsdt_dtsacct;
-- hak akses v$instance
grant select on v_$instance to rdsdt_dtsacct;
-- hak akses v$logmnr_contents
grant select on v_$logmnr_contents to rdsdt_dtsacct;
grant select on sys.USER$ to rdsdt_dtsacct;
grant select on SYS.OBJ$ to rdsdt_dtsacct;
grant select on SYS.COL$ to rdsdt_dtsacct;
grant select on SYS.IND$ to rdsdt_dtsacct;
grant select on SYS.ICOL$ to rdsdt_dtsacct;
grant select on SYS.CDEF$ to rdsdt_dtsacct;
grant select on SYS.CCOL$ to rdsdt_dtsacct;
grant select on SYS.TABPART$ to rdsdt_dtsacct;
grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;
-- hak akses V$PDBS
grant select on V_$PDBS to rdsdt_dtsacct;
grant select on v$database to rdsdt_dtsacct;
grant select on dba_objects to rdsdt_dtsacct;
grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct;
grant select on dba_tab_cols to rdsdt_dtsacct;
grant select_catalog_role TO rdsdt_dtsacct;Tahap 2: Beralih ke CDB$ROOT dan berikan izin
-- Beralih ke CDB$ROOT (kontainer root dari database kontainer).
ALTER SESSION SET container = CDB$ROOT;
-- Ubah parameter default Oracle untuk mengizinkan pembuatan pengguna di CDB$ROOT.
alter session set "_ORACLE_SCRIPT"=true;
create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;
grant LOGMINING TO rdsdt_dtsacct;
grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;Versi Oracle 12c hingga 19c — arsitektur non-multitenan
-- Buat akun database bernama rdsdt_dtsacct dan berikan izin ke akun tersebut.
create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant resource to rdsdt_dtsacct;
grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct;
grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;
grant select on v$database to rdsdt_dtsacct;
grant select on dba_objects to rdsdt_dtsacct;
grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct;
grant select on dba_tab_cols to rdsdt_dtsacct;
-- hak akses v$log
grant select on v_$log to rdsdt_dtsacct;
-- hak akses v$logfile
grant select on v_$logfile to rdsdt_dtsacct;
-- hak akses v$archived_log
grant select on v_$archived_log to rdsdt_dtsacct;
-- hak akses v$parameter
grant select on v_$parameter to rdsdt_dtsacct;
-- hak akses v$database
grant select on v_$database to rdsdt_dtsacct;
-- hak akses v$active_instances
grant select on v_$active_instances to rdsdt_dtsacct;
-- hak akses v$instance
grant select on v_$instance to rdsdt_dtsacct;
-- hak akses v$logmnr_contents
grant select on v_$logmnr_contents to rdsdt_dtsacct;
grant select on sys.USER$ to rdsdt_dtsacct;
grant select on SYS.OBJ$ to rdsdt_dtsacct;
grant select on SYS.COL$ to rdsdt_dtsacct;
grant select on SYS.IND$ to rdsdt_dtsacct;
grant select on SYS.ICOL$ to rdsdt_dtsacct;
grant select on SYS.CDEF$ to rdsdt_dtsacct;
grant select on SYS.CCOL$ to rdsdt_dtsacct;
grant select on SYS.TABPART$ to rdsdt_dtsacct;
grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;
grant LOGMINING TO rdsdt_dtsacct;
grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
grant select_catalog_role TO rdsdt_dtsacct;Buat tugas migrasi
Masuk ke Konsol DTS.
Jika Anda dialihkan ke Konsol Data Management (DMS), klik ikon
di
untuk kembali ke versi sebelumnya Konsol DTS.Di panel navigasi kiri, klik Data Migration.
Di bagian atas halaman Migration Tasks, pilih wilayah tempat instans tujuan berada.
Di pojok kanan atas, klik Create Migration Task.
Konfigurasikan database sumber dan tujuan.
Bagian Parameter Deskripsi N/A Nama Tugas Nama tugas yang dihasilkan DTS secara otomatis. Tentukan nama deskriptif agar mudah mengidentifikasi tugas tersebut. Nama tugas tidak perlu unik. Database Sumber Tipe Instans Metode akses untuk database sumber. Pada contoh ini, dipilih User-Created Database in ECS Instance. PentingJika Anda memilih tipe instans berbeda, siapkan lingkungan yang diperlukan untuk database yang dikelola sendiri terlebih dahulu. Lihat Ikhtisar persiapan.
Wilayah Instans Wilayah tempat instans Elastic Compute Service (ECS) yang menjalankan database Oracle sumber berada. ID Instans ECS ID instans ECS yang menjalankan database Oracle sumber. Tipe Database Jenis database sumber. Pilih Oracle. Nomor Port Port layanan database Oracle sumber. Default: 1521. Tipe Instans Arsitektur database Oracle sumber. Pilih Non-RAC Instance untuk menentukan parameter SID, atau RAC or PDB Instance untuk menentukan parameter Service Name. Contoh ini menggunakan Non-RAC Instance. SID ID sistem (SID) database Oracle sumber. Akun Database Akun untuk database Oracle sumber. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. Kata Sandi Database Kata sandi untuk akun database. Setelah memasukkan detail database sumber, klik Test Connectivity di samping Database Password untuk memverifikasi koneksi. Status Passed menunjukkan kredensial valid; jika muncul Failed, klik Check untuk meninjau dan memperbaiki detailnya. Database Tujuan Tipe Instans Jenis database tujuan. Pilih AnalyticDB for PostgreSQL. Wilayah Instance Wilayah tempat instans AnalyticDB for PostgreSQL tujuan berada. ID Instans ID instans AnalyticDB for PostgreSQL tujuan. Nama Database Nama database tujuan. Akun Database Akun untuk instans AnalyticDB for PostgreSQL tujuan. Untuk izin yang diperlukan, lihat Izin yang diperlukan untuk akun database. Kata Sandi Database Kata sandi untuk akun database. 
Di pojok kanan bawah, klik Set Whitelist and Next.
PeringatanMenambahkan blok CIDR server DTS ke daftar putih database atau aturan security group ECS menciptakan risiko keamanan. Sebelum melanjutkan, ambil tindakan pencegahan seperti menerapkan kredensial kuat, membatasi port yang terbuka, mengotentikasi panggilan API, mengaudit aturan daftar putih secara berkala, dan lebih memilih Express Connect, VPN Gateway, atau Smart Access Gateway untuk menghubungkan database Anda ke DTS.
Pilih jenis migrasi, jenis operasi, dan objek yang akan dimigrasikan.
Pengaturan Deskripsi Jenis migrasi Untuk hanya melakukan migrasi skema dan migrasi data penuh, pilih Schema Migration dan Full Data Migration. Untuk menjaga aplikasi tetap berjalan selama migrasi, pilih juga Incremental Data Migration. CatatanJika Incremental Data Migration tidak dipilih, hindari menulis data ke database sumber selama migrasi data penuh untuk menjaga konsistensi data.
Jenis operasi Pilih jenis operasi yang akan dimigrasikan selama migrasi data inkremental. Semua jenis operasi dipilih secara default. Objek yang akan dimigrasikan Pilih objek dari bagian Available dan klik ikon
untuk memindahkannya ke bagian Selected. Anda dapat memilih kolom, tabel, atau skema. Nama objek tetap tidak berubah di tujuan secara default. Untuk mengganti nama objek di tujuan, gunakan fitur pemetaan nama objek. Lihat Pemetaan nama objek.CatatanMengganti nama objek dapat menyebabkan migrasi objek dependen gagal.
Pemetaan nama objek Gunakan fitur ini untuk mengganti nama objek di instans tujuan. Lihat Pemetaan nama objek. Rentang waktu percobaan ulang Jika DTS tidak dapat terhubung ke database sumber atau tujuan, DTS akan mencoba ulang hingga 12 jam secara default. Sesuaikan rentang ini sesuai kebutuhan Anda. DTS akan melanjutkan tugas migrasi jika terhubung kembali dalam jendela percobaan ulang; jika tidak, tugas akan gagal. CatatanAnda dikenai biaya untuk instans DTS selama jendela percobaan ulang. Segera lepas instans DTS setelah instans sumber dan tujuan dilepas.
Lampirkan nama objek dalam tanda kutip Jika dipilih dan kondisi berikut berlaku, DTS akan melampirkan nama objek dalam tanda kutip tunggal (') atau ganda (") selama migrasi skema dan migrasi data inkremental: lingkungan bisnis sumber peka huruf besar/kecil dan nama database mengandung huruf besar dan kecil; nama tabel sumber tidak diawali huruf atau mengandung karakter selain huruf, angka, garis bawah (_), tanda pagar (#), atau tanda dolar ($); nama skema, tabel, atau kolom merupakan kata kunci, kata kunci yang dicadangkan, atau karakter tidak valid di database tujuan. 
Tentukan kolom kunci primer dan kunci distribusi untuk tabel yang dimigrasikan ke AnalyticDB for PostgreSQL.
Untuk detail tentang kolom kunci primer dan kunci distribusi, lihat Definisikan batasan dan Definisikan distribusi tabel. Jika DTS mendeteksi tabel tanpa kunci primer, opsi Set Primary Keys and Distribution Keys of All Tables Without Primary Keys to ROWID akan muncul. Memilihnya akan menambahkan ROWID sebagai kunci primer dan kunci distribusi untuk tabel tujuan tersebut.

Di pojok kanan bawah, klik Precheck.
DTS menjalankan pemeriksaan awal sebelum memulai tugas migrasi. Tugas hanya dapat dimulai setelah lulus pemeriksaan awal. Jika ada item yang gagal, klik ikon
untuk melihat detailnya, perbaiki masalah berdasarkan penyebabnya, dan jalankan ulang pemeriksaan awal. Anda juga dapat mengabaikan item yang gagal dan menjalankan ulang pemeriksaan awal jika kegagalannya tidak kritis.Setelah tugas lulus pemeriksaan awal, klik Next.
Pada kotak dialog Confirm Settings, atur parameter Channel Specification dan pilih Data Transmission Service (Pay-As-You-Go) Service Terms.
Klik Buy and Start untuk memulai tugas migrasi.
Hentikan migrasi dan alihkan
Cara menghentikan migrasi tergantung pada jenis migrasi yang Anda pilih.
Hanya migrasi skema dan migrasi data penuh
Jangan hentikan tugas secara manual. Tunggu hingga tugas berhenti secara otomatis. Menghentikan lebih awal dapat menyebabkan database tujuan memiliki data yang tidak lengkap.
Migrasi skema, migrasi data penuh, dan migrasi data inkremental
Tugas migrasi inkremental tidak berhenti secara otomatis. Hentikan tugas secara manual ketika data Anda sudah sepenuhnya sinkron.
Hentikan tugas selama jam sepi atau tepat sebelum Anda mengalihkan trafik aplikasi ke instans tujuan.
Untuk mengalihkan:
Tunggu hingga bilah progres menampilkan Incremental Data Migration dan status The migration task is not delayed.
Hentikan penulisan data ke database sumber selama beberapa menit. Latensi migrasi inkremental mungkin meningkat sebentar.
Tunggu hingga status kembali menjadi The migration task is not delayed.
Hentikan tugas migrasi secara manual.

Arahkan trafik aplikasi Anda ke instans AnalyticDB for PostgreSQL tujuan.
Langkah selanjutnya
Definisikan distribusi tabel — optimalkan performa kueri dengan mengonfigurasi kunci distribusi pada instans tujuan.
Buat akun database — kelola akses ke database tujuan.
Ikhtisar penagihan — pahami biaya DTS untuk tugas migrasi inkremental.