Database Migration Service memanfaatkan Oracle LogMiner API, yang merupakan bagian dari Oracle Database, untuk mengkueri file log pengulangan yang diarsipkan. File log redo berisi informasi tentang histori aktivitas di database. Untuk informasi selengkapnya tentang cara kerja Database Migration Service dengan file log ini, lihat Tentang alur data untuk migrasi Oracle.
Mengonfigurasi database Oracle sumber
Sebelum dapat menggunakan Database Migration Service untuk mengambil 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 dan 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 kembali keALL_VIEWS
. Pendekatan ini memberi Anda tingkat fleksibilitas terbesar terkait penentuan model keamanan yang paling sesuai dengan persyaratan Anda.Jika Anda ingin Layanan Migrasi Database hanya mengakses sebagian definisi objek tertentu, beri pengguna migrasi peran 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 akan disimpan, apakah data di akhir periode retensi akan diarsipkan atau dihancurkan.
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 untuk 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 konfigurasikan 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 menetapkan 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 arsip log minimal selama 4 hari, dan sebaiknya 7 hari.
Konfigurasikan kebijakan rotasi file log Oracle. Sebaiknya tetapkan ukuran file log maksimum tidak lebih dari 512 MB. Untuk informasi selengkapnya tentang cara mengelola rotasi log, lihat Menggunakan file log database Oracle.
Aktifkan data log tambahan. Untuk melakukannya, aktifkan logging tambahan di database terlebih dahulu 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 perubahannya ingin Anda catat ke dalam log.
Untuk mereplikasi sebagian besar atau semua tabel dalam database, pertimbangkan untuk mengaktifkan logging untuk seluruh database.
Di perintah 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 adalah
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 konfigurasikan 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 menetapkan 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 arsip log minimal selama 4 hari, dan sebaiknya 7 hari.
Kembali ke perintah SQL dari 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 logging tambahan di database terlebih dahulu 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 perubahannya ingin Anda catat ke dalam log.
Untuk mereplikasi sebagian besar atau semua tabel dalam database, 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 plug-in Oracle yang dihosting sendiri
Layanan Migrasi Database mendukung arsitektur multi-tenant Oracle, dengan satu database container (CDB) berisi satu atau beberapa database yang dapat di-plug (PDB). Setiap database plug-in adalah database mandiri dengan ID dan nama unik, serta dapat dikelola secara independen.
Untuk mengonfigurasi database pluggable Oracle yang dihosting sendiri agar Anda dapat menggunakannya dengan Database Migration Service, lakukan langkah-langkah berikut:
Pastikan database Anda berjalan dalam mode
ARCHIVELOG
. Untuk melakukannya, jalankan perintah berikut dari penampungCDB$ROOT
:SELECT LOG_MODE FROM V$DATABASE;
Jika hasilnya adalah
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 konfigurasikan 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 menetapkan 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 penampung
CDB$ROOT
:CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Sebaiknya simpan cadangan dan arsip log minimal selama 4 hari, dan sebaiknya 7 hari.
Kembali ke perintah SQL dari 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 logging tambahan di database pada tingkat
CDB$ROOT
terlebih dahulu dengan menjalankan perintah berikut:ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
Selanjutnya, pilih apakah akan mengaktifkan logging untuk tabel tertentu atau seluruh database pluggable.
Untuk mencatat perubahan hanya untuk tabel tertentu, hubungkan ke penampung database yang dapat dicolokkan 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 perubahannya ingin Anda catat ke dalam log.
Untuk mereplikasi sebagian besar atau semua tabel dalam database, 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 dicolokkan. Pengguna umum dapat terhubung ke dan melakukan operasi dalam root, dan dalam database plug-in mana pun yang memiliki hak istimewa. Nama pengguna umum harus diawali 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 dicolokkan.Hubungkan ke penampung
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 pluggable 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;