Database Migration Service memanfaatkan Oracle LogMiner API, yang merupakan bagian dari Oracle Database, untuk mengirim kueri ke file log pengulangan yang diarsipkan. File log redo berisi informasi tentang histori aktivitas di database. Untuk mengetahui informasi selengkapnya tentang cara Database Migration Service bekerja dengan file log ini, lihat Tentang alur data untuk migrasi Oracle.
Mengonfigurasi database Oracle sumber Anda
Sebelum dapat menggunakan Database Migration Service untuk menarik data dari database Oracle sumber, Anda harus mengonfigurasi database dengan:
Menyiapkan logging arsip untuk melacak perubahan dalam database Anda, seperti operasi
INSERT
,UPDATE
,DELETE
, danRENAME
.Memberikan hak istimewa yang sesuai ke akun pengguna yang akan digunakan untuk terhubung ke database Anda serta mengakses objek skema dan kode.
Secara default, Database Migration Service mencoba mengakses semua definisi objek Anda melalui
DBA_VIEWS
. Akses keDBA_VIEWS
diberikan dengan hak istimewaSELECT ANY DICTIONARY
. Jika tampilan DBA tidak dapat diakses oleh akun pengguna migrasi, Layanan Migrasi Database akan melakukan penggantian keALL_VIEWS
. Pendekatan ini memberi Anda fleksibilitas terbesar dalam menentukan model keamanan yang paling sesuai dengan persyaratan Anda.Jika Anda ingin Layanan Migrasi Database hanya mengakses subset tertentu dari definisi objek Anda, berikan peran kepada pengguna migrasi dengan konfigurasi hak istimewa yang lebih terperinci, bukan
SELECT ANY DICTIONARY
.Menentukan kebijakan retensi data untuk database Anda guna menentukan data mana yang akan diarsipkan, berapa lama data tersebut akan disimpan, dan apakah data di akhir periode retensi harus diarsipkan atau dimusnahkan.
Database Migration Service berfungsi dengan jenis database Oracle berikut:
- Amazon RDS untuk Oracle
- Oracle yang dihosting sendiri
- Database pluggable Oracle yang dihosting sendiri
Mengonfigurasi database Amazon RDS for Oracle
Pastikan database Anda berjalan dalam mode
ARCHIVELOG
. Untuk melakukannya, jalankan perintah berikut:SELECT LOG_MODE FROM V$DATABASE;
Jika hasilnya adalah
ARCHIVELOG
, lanjutkan ke langkah c.Jika hasilnya adalah
NOARCHIVELOG
, Anda harus mengaktifkan modeARCHIVELOG
untuk database Anda.File log yang diarsipkan menggunakan ruang disk, sebaiknya konfigurasi parameter
DB_RECOVERY_FILE_DEST_SIZE
untuk database Anda. Gunakan parameter ini untuk menentukan (dalam byte) batas ketat pada total ruang yang akan digunakan oleh file pemulihan database target. Dengan menyetel parameter ini, Anda dapat mengelola kompromi antara ketersediaan informasi dan ruang disk.Tentukan kebijakan retensi data untuk database Anda dengan menjalankan perintah ini:
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);
Sebaiknya simpan cadangan dan log arsip minimal selama 4 hari, dan 7 hari adalah waktu yang direkomendasikan.
Konfigurasi kebijakan rotasi file log Oracle. Sebaiknya tetapkan ukuran file log maksimum tidak lebih dari 512 MB. Untuk mengetahui informasi selengkapnya tentang mengelola rotasi log, lihat Bekerja dengan file log database Oracle.
Aktifkan data log tambahan. Untuk melakukannya, aktifkan terlebih dahulu logging tambahan di database dengan menjalankan perintah berikut:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
Selanjutnya, pilih apakah akan mengaktifkan logging untuk tabel tertentu atau seluruh database.
Untuk mencatat perubahan hanya untuk tabel tertentu, jalankan perintah berikut untuk setiap tabel yang ingin Anda replikasi:
ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
Ganti kode berikut:
- SCHEMA: nama skema yang berisi tabel.
- TABLE: nama tabel yang ingin Anda catat perubahannya.
Untuk mereplikasi sebagian besar atau semua tabel dalam database Anda, pertimbangkan untuk mengaktifkan logging untuk seluruh database.
Di prompt SQL, jalankan perintah berikut untuk mengaktifkan data log tambahan untuk seluruh database:
exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','ALL');
Berikan hak istimewa yang sesuai ke akun pengguna yang akan digunakan untuk terhubung ke database Anda. Untuk melakukannya, jalankan perintah berikut:
GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','USER_NAME','SELECT'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','USER_NAME','EXECUTE'); exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','USER_NAME','EXECUTE'); GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Jika database sumber Anda adalah Oracle 12c atau yang lebih baru, berikan hak istimewa tambahan berikut:
GRANT LOGMINING TO USER_NAME;
Mengonfigurasi database Oracle yang dihosting sendiri
Pastikan database Anda berjalan dalam mode
ARCHIVELOG
. Untuk melakukannya, jalankan perintah berikut:SELECT LOG_MODE FROM V$DATABASE;
Jika hasilnya
ARCHIVELOG
, lanjutkan ke langkah 2.Jika hasilnya adalah
NOARCHIVELOG
, Anda harus mengaktifkan modeARCHIVELOG
untuk database Anda.Jalankan perintah berikut saat login sebagai
SYSDBA
:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
File log yang diarsipkan menggunakan ruang disk, sebaiknya konfigurasi parameter
DB_RECOVERY_FILE_DEST_SIZE
untuk database Anda. Gunakan parameter ini untuk menentukan (dalam byte) batas ketat pada total ruang yang akan digunakan oleh file pemulihan database target. Dengan menyetel parameter ini, Anda dapat mengelola kompromi antara ketersediaan informasi dan ruang disk.
Tentukan kebijakan retensi data untuk database Anda dengan menjalankan perintah Oracle Recovery Manager (RMAN) berikut:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Sebaiknya simpan cadangan dan log arsip minimal selama 4 hari, dan 7 hari adalah waktu yang direkomendasikan.
Kembali ke perintah SQL alat database yang Anda gunakan untuk mengonfigurasi kebijakan rotasi file log Oracle. Sebaiknya tetapkan ukuran file log maksimum tidak lebih dari 512 MB.
Aktifkan data log tambahan. Untuk melakukannya, aktifkan terlebih dahulu logging tambahan di database dengan menjalankan perintah berikut:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Selanjutnya, pilih apakah akan mengaktifkan logging untuk tabel tertentu atau seluruh database.
Untuk mencatat perubahan hanya untuk tabel tertentu, jalankan perintah berikut untuk setiap tabel yang ingin Anda replikasi:
ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
Ganti kode berikut:
- SCHEMA: nama skema yang berisi tabel.
- TABLE: nama tabel yang ingin Anda catat perubahannya.
Untuk mereplikasi sebagian besar atau semua tabel dalam database Anda, pertimbangkan untuk mengaktifkan logging untuk seluruh database.
Jalankan perintah berikut untuk mengaktifkan data log tambahan untuk seluruh database:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
Berikan hak istimewa yang sesuai ke akun pengguna yang akan digunakan untuk terhubung ke database Anda. Untuk melakukannya, jalankan perintah berikut:
GRANT CONNECT TO USER_NAME; GRANT CREATE SESSION TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_LOGS TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME; GRANT SELECT ANY TRANSACTION TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Jika database sumber Anda adalah Oracle 12c atau yang lebih baru, berikan hak istimewa tambahan berikut:
GRANT LOGMINING TO USER_NAME;
Mengonfigurasi database yang dapat dicocokkan Oracle yang dihosting sendiri
Database Migration Service mendukung arsitektur multi-tenant Oracle, di mana satu database container (CDB) berisi satu atau beberapa database yang dapat di-plug (PDB). Setiap database yang dapat di-plug adalah database mandiri dengan ID dan nama unik, serta dapat dikelola secara independen.
Untuk mengonfigurasi database pluggable Oracle yang dihosting sendiri agar dapat digunakan dengan Database Migration Service, lakukan langkah-langkah berikut:
Pastikan database Anda berjalan dalam mode
ARCHIVELOG
. Untuk melakukannya, jalankan perintah berikut dari containerCDB$ROOT
:SELECT LOG_MODE FROM V$DATABASE;
Jika hasilnya
ARCHIVELOG
, lanjutkan ke langkah 2.Jika hasilnya adalah
NOARCHIVELOG
, Anda harus mengaktifkan modeARCHIVELOG
untuk database Anda.Jalankan perintah berikut saat login sebagai
SYSDBA
:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
File log yang diarsipkan menggunakan ruang disk, sebaiknya konfigurasi parameter
DB_RECOVERY_FILE_DEST_SIZE
untuk database Anda. Gunakan parameter ini untuk menentukan (dalam byte) batas ketat pada total ruang yang akan digunakan oleh file pemulihan database target. Dengan menyetel parameter ini, Anda dapat mengelola kompromi antara ketersediaan informasi dan ruang disk.
Tentukan kebijakan retensi data untuk database Anda dengan menjalankan perintah Oracle Recovery Manager (RMAN) berikut dari container
CDB$ROOT
:CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Sebaiknya simpan cadangan dan log arsip minimal selama 4 hari, dan 7 hari adalah waktu yang direkomendasikan.
Kembali ke perintah SQL alat database yang Anda gunakan untuk mengonfigurasi kebijakan rotasi file log Oracle. Sebaiknya tetapkan ukuran file log maksimum tidak lebih dari 512 MB.
Aktifkan data log tambahan. Untuk melakukannya, aktifkan terlebih dahulu logging tambahan di database pada tingkat
CDB$ROOT
dengan menjalankan perintah berikut:ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Selanjutnya, pilih apakah akan mengaktifkan logging untuk tabel tertentu atau seluruh database yang dapat di-plug.
Untuk mencatat perubahan hanya untuk tabel tertentu, hubungkan ke penampung database pluggable dan jalankan perintah berikut untuk setiap tabel yang ingin Anda replikasi:
ALTER TABLE SCHEMA.TABLE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS
Ganti kode berikut:
- SCHEMA: nama skema yang berisi tabel.
- TABLE: nama tabel yang ingin Anda catat perubahannya.
Untuk mereplikasi sebagian besar atau semua tabel dalam database Anda, pertimbangkan untuk mengaktifkan logging untuk seluruh database.
Jalankan perintah berikut untuk mengaktifkan data log tambahan untuk seluruh database:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
Buat pengguna umum. Pengguna umum memiliki identitas yang sama di penampung
CDB$ROOT
dan di database yang dapat di-plug. Pengguna umum dapat terhubung ke dan melakukan operasi dalam root, dan dalam database pluggable tempat pengguna memiliki hak istimewa. Nama pengguna umum harus dimulai denganC##
atauc##
.Berikan hak istimewa yang sesuai kepada pengguna umum yang akan digunakan untuk terhubung ke database Anda. Izin yang berbeda diperlukan di tingkat penampung
CDB$ROOT
dan database yang dapat di-plug.Hubungkan ke container
CDB$ROOT
dan jalankan perintah berikut:GRANT CREATE SESSION TO USER_NAME; GRANT SET CONTAINER TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR TO USER_NAME; GRANT EXECUTE ON DBMS_LOGMNR_D TO USER_NAME; GRANT LOGMINING TO USER_NAME; GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
Hubungkan ke database yang dapat di-plug dan jalankan perintah berikut:
GRANT CREATE SESSION TO USER_NAME; GRANT SET CONTAINER TO USER_NAME; GRANT SELECT ANY TABLE TO USER_NAME; GRANT SELECT ANY DICTIONARY TO USER_NAME; GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME; GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO USER_NAME; GRANT SELECT ON DBA_SUPPLEMENTAL_LOGGING TO USER_NAME; GRANT SELECT ON DBA_EXTENTS TO USER_NAME;