Halaman ini menjelaskan cara mengonfigurasi change data capture (CDC) untuk menstreaming data dari database Oracle yang dikelola sendiri ke tujuan yang didukung, seperti BigQuery atau Cloud Storage.
Anda dapat mengonfigurasi database Oracle yang dikelola sendiri untuk menggunakan metode CDC berikut:
Metode ini menentukan cara Datastream mengakses file log Anda. Untuk mengetahui informasi selengkapnya tentang pembaca log biner dan LogMiner API, lihat Menggunakan file redo log database Oracle.
Untuk mengetahui petunjuk mendetail tentang cara mengonfigurasi database Oracle sumber untuk setiap metode ini, lihat bagian berikut.
Mengonfigurasi database Oracle yang dikelola sendiri untuk pembaca log biner
Untuk mengonfigurasi database Oracle yang dikelola sendiri agar dapat digunakan dengan metode CDC pembaca log biner, lakukan langkah-langkah berikut:
Buat akun pengguna database yang akan digunakan oleh Datastream untuk terhubung ke database Anda:
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;
Ganti kode berikut:
- USER_NAME: nama akun pengguna database yang ingin Anda gunakan untuk terhubung ke database Anda.
- USER_PASSWORD: sandi untuk akun pengguna database.
Pilih salah satu metode berikut untuk mengakses file log Anda:
Pengelolaan Penyimpanan Otomatis (ASM): jika Anda memilih opsi ini, Anda harus membuat koneksi ASM khusus, dan memberikan detailnya saat Anda membuat profil koneksi. Akun pengguna yang digunakan untuk koneksi ASM harus memiliki hak istimewa
SYSASM.Untuk membuat pengguna ASM baru dengan hak istimewa
SYSASM, jalankan perintah berikut:CREATE USER ASM_USER_NAME IDENTIFIED BY ASM_PASSWORD; GRANT SYSASM TO ASM_USER_NAME;
Ganti kode berikut:
- ASM_USER_NAME: nama pengguna ASM.
- ASM_PASSWORD: sandi untuk pengguna ASM.
Direktori database: jika Anda memilih opsi ini, Anda harus membuat objek direktori database yang mengarah ke file redo log dan file log yang diarsipkan, serta memberikan akses
READke 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 pengulangan online.
- DIRECTORY_NAME_2: nama direktori untuk file log pengulangan yang diarsipkan.
- ONLINE_REDO_LOGS_PATH: jalur ke direktori tempat file log pengulangan online akan disimpan.
- ARCHIVED_REDO_LOGS_PATH: jalur ke direktori tempat file log yang diarsipkan akan disimpan.
- USER_NAME: nama akun pengguna database yang dibuat sebelumnya.
Jika Anda memilih metode pembaca log biner dan menggunakan direktori database, Anda harus memberikan nama direktori log pengulangan dan log yang diarsipkan saat Anda membuat aliran data.
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;- Jika hasilnya adalah
ARCHIVELOG, lanjutkan ke langkah berikutnya. - Jika hasilnya adalah
NOARCHIVELOG, Anda harus mengaktifkanARCHIVELOGmode untuk database Anda. Jalankan perintah berikut saat sedang login sebagai
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
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 maksimum ruang total yang akan digunakan oleh file pemulihan database target. Dengan menetapkan parameter ini, Anda dapat mengelola kompromi antara melindungi database agar tidak kehabisan ruang disk dan aliran data yang gagal karena kehilangan posisi log.
- Jika hasilnya adalah
Tentukan kebijakan retensi data untuk database Anda dengan menjalankan perintah Oracle Recovery Manager (RMAN) ini:
TARGET / CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Sebaiknya simpan cadangan dan log arsip 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 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 di database Anda, 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;
Berikan hak istimewa yang sesuai langsung ke akun pengguna yang digunakan untuk terhubung ke database Anda. Perhatikan bahwa pemberian ini tidak berfungsi jika ditetapkan ke peran, misalnya. 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;
Ganti USER_NAME dengan nama akun pengguna database yang dibuat sebelumnya.
Mengonfigurasi database Oracle yang dikelola sendiri untuk LogMiner
Buat akun pengguna database yang akan digunakan oleh Datastream untuk terhubung ke database Anda:
CREATE USER USER_NAME IDENTIFIED BY USER_PASSWORD;
Ganti kode berikut:
- USER_NAME: nama akun pengguna database yang ingin Anda gunakan untuk terhubung ke database Anda.
- USER_PASSWORD: sandi untuk akun pengguna database.
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;- Jika hasilnya adalah
ARCHIVELOG, lanjutkan ke langkah berikutnya. - Jika hasilnya adalah
NOARCHIVELOG, Anda harus mengaktifkanARCHIVELOGmode untuk database Anda. Jalankan perintah berikut saat sedang login sebagai
SYSDBA:SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
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 maksimum ruang total yang akan digunakan oleh file pemulihan database target. Dengan menetapkan parameter ini, Anda dapat mengelola kompromi antara melindungi database agar tidak kehabisan ruang disk dan aliran data yang gagal karena kehilangan posisi log.
- Jika hasilnya adalah
Tentukan kebijakan retensi data untuk database Anda dengan menjalankan perintah Oracle Recovery Manager (RMAN) ini:
TARGET / CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 4 DAYS;
Sebaiknya simpan cadangan dan log arsip 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 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 di database Anda, 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;
Berikan hak istimewa yang sesuai langsung ke akun pengguna yang digunakan untuk terhubung ke database Anda. Perhatikan bahwa pemberian ini tidak berfungsi jika ditetapkan ke peran, misalnya. Untuk melakukannya, jalankan perintah berikut:
GRANT EXECUTE_CATALOG_ROLE TO USER_NAME; 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_$LOG TO USER_NAME; -- for primary databases GRANT SELECT ON SYS.V_$STANDBY_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 SYS.V_$LOGMNR_CONTENTS TO USER_NAME; GRANT SELECT ON SYS.V_$PARAMETER 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;
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;
Jika organisasi Anda tidak mengizinkan pemberian izin
GRANT SELECT ANY TABLE, gunakan solusi yang dijelaskan di bagian Oracle change data capture (CDC) pada halaman FAQ Datastream.Jika database sumber Anda adalah Oracle 12c atau yang lebih baru, berikan hak istimewa tambahan berikut:
GRANT LOGMINING TO USER_NAME;
Berikan akses
SELECTakun pengguna ke tampilanDBA_EXTENTSdi database Anda. Hak istimewa ini memungkinkan Anda menggunakan pengisian ulang berbasisROWIDuntuk sumber Oracle Anda:GRANT SELECT ON DBA_EXTENTS TO USER_NAME;
Langkah berikutnya
- Pelajari lebih lanjut cara Datastream berfungsi dengan sumber Oracle.