Mengonfigurasi database Oracle yang dapat dicocokkan

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

Anda dapat mengonfigurasi database Oracle yang dapat di-plug untuk digunakan dengan metode CDC berikut:

Untuk mengetahui informasi selengkapnya tentang pembaca log biner dan LogMiner API, lihat Menggunakan file log pengulangan database Oracle.

Untuk mengetahui petunjuk mendetail tentang cara mengonfigurasi database Oracle sumber untuk setiap metode ini, lihat bagian berikut.

Mengonfigurasi database Oracle yang dapat di-plug untuk pembaca log biner

Untuk mengonfigurasi database Oracle yang dapat di-plug untuk digunakan dengan metode CDC pembaca log biner, lakukan langkah-langkah berikut:

  1. Pilih salah satu metode berikut untuk mengakses file log Anda:

    • Pengelolaan Penyimpanan Otomatis (ASM): jika Anda memilih opsi ini, Anda perlu membuat koneksi ASM khusus, dan memberikan detailnya saat Anda membuat profil koneksi.
    • Direktori database: jika Anda memilih opsi ini, Anda perlu membuat objek direktori database yang mengarah ke file log redo dan file log yang diarsipkan, serta memberikan akses READ ke direktori untuk pengguna database Anda:
    CREATE DIRECTORY DIRECTORY_NAME_1 as 'ONLINE_REDO_LOGS_PATH';
    CREATE DIRECTORY DIRECTORY_NAME_2 as 'ARCHIVED_REDO_LOGS_PATH';
    GRANT READ ON DIRECTORY DIRECTORY_NAME_1 to USER_NAME;
    GRANT READ ON DIRECTORY DIRECTORY_NAME_2 to USER_NAME;

    Ganti kode berikut:

    • DIRECTORY_NAME_1: nama direktori untuk file log redo online.
    • DIRECTORY_NAME_2: nama direktori untuk file log redo yang diarsipkan.
    • ONLINE_REDO_LOGS_PATH: jalur ke direktori tempat file log redo online akan disimpan.
    • ARCHIVED_REDO_LOGS_PATH: jalur ke direktori tempat file log yang diarsipkan akan disimpan.
    • USER_NAME: nama pengguna database yang ingin Anda beri akses READ.

    Jika memilih metode pembaca log biner dan menggunakan direktori database, Anda perlu memberikan nama direktori log redo dan log yang diarsipkan saat membuat streaming.

  2. Pastikan database Anda berjalan dalam mode ARCHIVELOG.

    Untuk melakukannya, login ke database Oracle Anda dan jalankan perintah berikut pada perintah SQL:

    SELECT LOG_MODE FROM V$DATABASE;
    
    1. Jika hasilnya ARCHIVELOG, lanjutkan ke langkah berikutnya.
    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 Anda harus mengonfigurasi 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 melindungi database agar tidak kehabisan ruang disk dan kegagalan streaming karena hilangnya posisi log.

  3. Tentukan kebijakan retensi data untuk database Anda dengan menjalankan perintah Oracle Recovery Manager (RMAN) berikut:

    TARGET /
    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.

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

  5. Aktifkan data log tambahan. Untuk melakukannya, aktifkan terlebih dahulu logging tambahan tingkat database minimal 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;
  6. Berikan hak istimewa yang sesuai ke akun pengguna yang akan digunakan untuk terhubung ke database pluggable Anda. Untuk melakukannya, jalankan perintah berikut:

    GRANT SELECT ON GV_$LOG TO USER_NAME;
    GRANT SELECT ON GV_$LOGFILE TO USER_NAME;
    GRANT SELECT ON GV_$ARCHIVED_LOG TO USER_NAME;
    GRANT SELECT ON GV_$INSTANCE TO USER_NAME;
    GRANT SELECT ON GV_$STANDBY_LOG TO USER_NAME;
    GRANT SELECT ON V_$INSTANCE TO USER_NAME;
    GRANT SELECT ON V_$PDBS TO USER_NAME;
    GRANT SELECT ON V_$TRANSPORTABLE_PLATFORM TO USER_NAME;
    GRANT SELECT ON V_$DATABASE TO USER_NAME;
    GRANT SELECT ON V_$PARAMETER TO USER_NAME;
    GRANT SELECT ON COL$ TO USER_NAME;
    GRANT SELECT ON DBA_OBJECTS TO USER_NAME;
    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;
    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
    
    GRANT CONNECT TO USER_NAME;
    GRANT CREATE SESSION TO USER_NAME;
    GRANT SELECT ANY TABLE TO USER_NAME;
    GRANT READ ON DIRECTORY ONLINELOG_DIR TO USER_NAME;
    GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO USER_NAME;

    Ganti USER_NAME dengan nama akun pengguna yang ingin Anda gunakan untuk terhubung ke database.

Mengonfigurasi database Oracle yang dapat di-plug untuk LogMiner

Untuk mengonfigurasi database pluggable Oracle yang dihosting sendiri agar dapat digunakan dengan LogMiner API, lakukan langkah-langkah berikut:

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

    SELECT LOG_MODE FROM V$DATABASE;

    1. Jika hasilnya 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 Anda harus mengonfigurasi 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 melindungi database agar tidak kehabisan ruang disk dan kegagalan streaming karena hilangnya posisi log.

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

    Perintah ini menentukan kebijakan retensi data untuk semua database yang dapat di-plug di database penampung Anda.

    Sebaiknya simpan cadangan dan log arsip minimal selama 4 hari, dan 7 hari adalah waktu yang 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, aktifkan terlebih dahulu logging tambahan di database pada tingkat penampung 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 yang dapat di-plug 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 beberapa 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 di-plug. Pengguna umum dapat terhubung ke dan melakukan operasi dalam penampung CDB$ROOT, dan dalam database yang dapat di-plug in yang memiliki hak istimewa. Nama pengguna umum harus dimulai 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 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 ON SYS.V_$DATABASE TO USER_NAME;
    GRANT SELECT ON SYS.V_$LOG TO USER_NAME; -- for primary databases
    GRANT SELECT ON SYS.V_$STANDY_LOG TO USER_NAME; -- for standby databases
    GRANT SELECT ON SYS.V_$LOGFILE 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 SYS.V_$PARAMETER TO USER_NAME;
    
  7. Berikan akses SELECT pengguna umum ke tampilan DBA_EXTENTS di database Anda. Dengan hak istimewa ini, Anda dapat menggunakan pengisian ulang berbasis ROWID untuk sumber Oracle Anda:

    GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
  8. Jika database Anda menggunakan Enkripsi Data Transparan (TDE), berikan izin berikut:

    GRANT SELECT ON DBA_TABLESPACES TO USER_NAME;
    GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO USER_NAME;

Langkah berikutnya

  • Pelajari lebih lanjut cara kerja Datastream dengan sumber Oracle.