Skip to main content

Prerequisites

  • Host and port
  • Single-tenant architecture: Database name
  • Multi-tenant architecture: Container database name (CDB) and pluggable database name (PDB)
  • Service account credentials

Oracle setup

1. Enable archive logs

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

2. Enable LogMiner

-- Enable database supplemental logging
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

-- For each table, enable column level supplemental logging:
ALTER TABLE SCHEMA_NAME.TABLE_NAME ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS

3. Creating the database user

ALTER SESSION SET CONTAINER=CDB$ROOT;
CREATE USER C##ARTIE_USER IDENTIFIED BY YOUR_PASSWORD;

ALTER SESSION SET CONTAINER={PDB};
CREATE TABLESPACE ARTIE_LOGMINER_TBS DATAFILE SIZE 25M AUTOEXTEND ON MAXSIZE UNLIMITED;
ALTER USER C##ARTIE_USER DEFAULT TABLESPACE ARTIE_LOGMINER_TBS;
ALTER USER C##ARTIE_USER QUOTA UNLIMITED ON ARTIE_LOGMINER_TBS;

-- Grant permissions
GRANT CREATE SESSION TO C##ARTIE_USER CONTAINER=ALL; 
GRANT SET CONTAINER TO C##ARTIE_USER CONTAINER=ALL; 

-- Allows the Connector to use LogMiner
GRANT LOGMINING TO C##ARTIE_USER CONTAINER=ALL;

-- Flashback queries used for performing initial snapshots of the data
GRANT FLASHBACK ANY TABLE TO C##ARTIE_USER CONTAINER=ALL; 
GRANT SELECT ANY TRANSACTION TO C##ARTIE_USER CONTAINER=ALL; 

-- Required for schema history when performing initial snapshots
GRANT SELECT_CATALOG_ROLE TO C##ARTIE_USER CONTAINER=ALL; 
GRANT EXECUTE_CATALOG_ROLE TO C##ARTIE_USER CONTAINER=ALL; 

-- Connector creates a table for explicitly managing the flushing of internal log buffers (LGWR)
GRANT CREATE TABLE TO C##ARTIE_USER CONTAINER=ALL;

GRANT CREATE SEQUENCE TO C##ARTIE_USER CONTAINER=ALL; 

-- Grant the user permission to read each schema and table you wish to sync
ALTER SESSION SET CONTAINER={PDB};
GRANT SELECT ON SCHEMA.TABLE TO C##ARTIE_USER CONTAINER=ALL;
-- Alternatively, you can grant access to all
-- GRANT SELECT ANY TABLE TO C##ARTIE_USER CONTAINER=ALL;

-- Grant the user access to the DBA_EXTENTS, DBA_TABLESPACES, DBA_SEGMENTS, and TRANSACTION system views. 
GRANT SELECT ON DBA_EXTENTS TO C##ARTIE_USER;
GRANT SELECT ON DBA_TABLESPACES TO C##ARTIE_USER;
GRANT SELECT ON DBA_SEGMENTS TO C##ARTIE_USER;
GRANT SELECT ANY TRANSACTION TO C##ARTIE_USER;

-- Grant the user permission to run LogMiner
ALTER SESSION SET CONTAINER=CDB$ROOT;
GRANT SELECT ON SYS.V_$DATABASE TO C##ARTIE_USER;
GRANT SELECT ON SYS.V_$PARAMETER TO C##ARTIE_USER;
GRANT SELECT ON SYS.V_$ARCHIVED_LOG TO C##ARTIE_USER;
GRANT SELECT ON SYS.V_$ARCHIVE_DEST TO C##ARTIE_USER;
GRANT SELECT ON SYS.V_$LOGMNR_CONTENTS TO C##ARTIE_USER;
GRANT EXECUTE ON DBMS_LOGMNR TO C##ARTIE_USER;
GRANT EXECUTE ON DBMS_LOGMNR_D TO C##ARTIE_USER;
GRANT SELECT ANY TRANSACTION TO C##ARTIE_USER;
GRANT EXECUTE_CATALOG_ROLE TO C##ARTIE_USER;

Overriding primary keys

If you want to replicate tables that do not have primary keys, you can specify the unique index that you want to use as the primary key. Specify this under the “Advanced settings” tab in the table settings.