Mengonfigurasi database Oracle sumber

Ringkasan

Database Migration Service mendukung migrasi berkelanjutan dari database sumber ke database tujuan AlloyDB untuk PostgreSQL.

Database sumber yang didukung untuk Oracle mencakup versi:

  • Oracle 11g, Versi 11.2.0.4
  • Oracle 12c, Versi 12.1.0.2
  • Oracle 12c, Versi 12.2.0.1
  • Oracle 18c
  • Oracle 19c
  • Oracle 21c
  • Cluster Oracle Real Application (RAC)

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, dan RENAME.

  • 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 ke DBA_VIEWS diberikan dengan hak istimewa SELECT ANY DICTIONARY. Jika tampilan DBA tidak dapat diakses oleh akun pengguna migrasi, Layanan Migrasi Database akan kembali ke ALL_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 saat ini berfungsi dengan jenis database Oracle berikut:

Mengonfigurasi database Amazon RDS untuk Oracle

  1. Pastikan database Anda berjalan dalam mode ARCHIVELOG. Untuk melakukannya, jalankan perintah berikut:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Jika hasilnya adalah ARCHIVELOG, lanjutkan ke langkah c.

    2. Jika hasilnya adalah NOARCHIVELOG, Anda harus mengaktifkan mode ARCHIVELOG untuk database Anda.

    3. File log yang diarsipkan menggunakan ruang disk, jadi sebaiknya konfigurasikan parameter DB_RECOVERY_FILE_DEST_SIZE untuk database Anda. Gunakan parameter ini untuk menentukan (dalam byte) batas keras 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.

    4. Tentukan kebijakan retensi data untuk database Anda dengan menjalankan perintah ini:

      exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',96);

      Sebaiknya Anda menyimpan cadangan dan log arsip minimal selama 4 hari, dan 7 hari direkomendasikan.

    5. 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 redo database Oracle.

  2. 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, sebaiknya aktifkan 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');
  3. 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

  1. Pastikan database Anda berjalan dalam mode ARCHIVELOG. Untuk melakukannya, jalankan perintah berikut:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Jika hasilnya adalah ARCHIVELOG, lanjutkan ke langkah 2.

    2. Jika hasilnya adalah NOARCHIVELOG, Anda harus mengaktifkan mode ARCHIVELOG untuk database Anda.

    3. Jalankan perintah berikut saat login sebagai SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. File log yang diarsipkan menggunakan ruang disk, jadi sebaiknya konfigurasikan parameter DB_RECOVERY_FILE_DEST_SIZE untuk database Anda. Gunakan parameter ini untuk menentukan (dalam byte) batas keras 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.

  2. 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 Anda menyimpan cadangan dan log arsip minimal selama 4 hari, dan 7 hari direkomendasikan.

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

  4. 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, sebaiknya aktifkan logging untuk seluruh database.

    Jalankan perintah berikut untuk mengaktifkan data log tambahan untuk seluruh database:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
  5. 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:

  1. Pastikan database Anda berjalan dalam mode ARCHIVELOG. Untuk melakukannya, jalankan perintah berikut dari penampung CDB$ROOT:

    SELECT LOG_MODE FROM V$DATABASE;

    1. Jika hasilnya adalah ARCHIVELOG, lanjutkan ke langkah 2.

    2. Jika hasilnya adalah NOARCHIVELOG, Anda harus mengaktifkan mode ARCHIVELOG untuk database Anda.

    3. Jalankan perintah berikut saat login sebagai SYSDBA:

      SHUTDOWN IMMEDIATE;
      STARTUP MOUNT;
      ALTER DATABASE ARCHIVELOG;
      ALTER DATABASE OPEN;
    4. File log yang diarsipkan menggunakan ruang disk, jadi sebaiknya konfigurasikan parameter DB_RECOVERY_FILE_DEST_SIZE untuk database Anda. Gunakan parameter ini untuk menentukan (dalam byte) batas keras 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.

  2. 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 Anda menyimpan cadangan dan log arsip minimal selama 4 hari, dan 7 hari direkomendasikan.

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

  4. Aktifkan data log tambahan. Untuk melakukannya, pertama-tama aktifkan 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 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, sebaiknya aktifkan logging untuk seluruh database.

    Jalankan perintah berikut untuk mengaktifkan data log tambahan untuk seluruh database:

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (all) COLUMNS;
  5. 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 apa pun yang memiliki hak istimewa. Nama pengguna umum harus diawali dengan C## atau c##.

  6. 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;