Skip to main content

Create Oracle User and Grant Required Permissions

Oracle 19c + Debezium LogMiner Setup Guide

1. Enable Required Database Settings (CDB$ROOT)

sqlplus / as sysdba

Switch to CDB root

ALTER SESSION SET CONTAINER = CDB$ROOT;

Confirm:

SHOW CON_NAME;

Should show:

CDB$ROOT

⚠ Now you can run MOUNT / ARCHIVELOG commands

Shut down the entire CDB

SHUTDOWN IMMEDIATE;

You should see:

Database closed. Database dismounted. ORACLE instance shut down.

Start in MOUNT mode

Now run:

STARTUP MOUNT;

This time it will succeed because now you are in the root.

Enable ARCHIVELOG

ALTER DATABASE ARCHIVELOG;

Open the database

ALTER DATABASE OPEN;

Verify

ARCHIVE LOG LIST;

Apply supplemental logging

ALTER SESSION SET CONTAINER=CDB$ROOT;

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

ALTER DATABASE FORCE LOGGING;

ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATION=TRUE SCOPE=BOTH;

2. Create Common User for Debezium

ALTER SESSION SET CONTAINER=CDB$ROOT;

CREATE USER C##DEBEZIUM IDENTIFIED BY "StrongPassword" CONTAINER=ALL;

Grant LogMiner + Root Privileges

GRANT CREATE SESSION TO C##DEBEZIUM CONTAINER=ALL;
GRANT SET CONTAINER TO C##DEBEZIUM CONTAINER=ALL;

GRANT SELECT ANY DICTIONARY TO C##DEBEZIUM CONTAINER=ALL;
GRANT SELECT ANY TRANSACTION TO C##DEBEZIUM CONTAINER=ALL;
GRANT LOGMINING TO C##DEBEZIUM CONTAINER=ALL;

GRANT EXECUTE ON SYS.DBMS_LOGMNR TO C##DEBEZIUM CONTAINER=ALL;
GRANT EXECUTE ON SYS.DBMS_LOGMNR_D TO C##DEBEZIUM CONTAINER=ALL;

GRANT SELECT ON V_$LOG TO C##DEBEZIUM CONTAINER=ALL;
GRANT SELECT ON V_$LOGFILE TO C##DEBEZIUM CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVED_LOG TO C##DEBEZIUM CONTAINER=ALL;
GRANT SELECT ON V_$DATABASE TO C##DEBEZIUM CONTAINER=ALL;
GRANT SELECT ON V_$INSTANCE TO C##DEBEZIUM CONTAINER=ALL;

3. Create PDB User (inside ORCLPDB1)

ALTER SESSION SET CONTAINER=ORCLPDB1;

CREATE USER PDBZIUM IDENTIFIED BY "StrongPassword";

GRANT CONNECT, RESOURCE TO PDBZIUM;
GRANT CREATE SESSION TO PDBZIUM;
GRANT SELECT ANY DICTIONARY TO PDBZIUM;
GRANT SELECT ANY TABLE TO PDBZIUM;
GRANT SELECT ANY TRANSACTION TO PDBZIUM;
GRANT FLASHBACK ANY TABLE TO PDBZIUM;

ALTER USER PDBZIUM QUOTA UNLIMITED ON USERS;
ALTER USER C##DEBEZIUM QUOTA UNLIMITED ON USERS;

4. Required Debezium Connector Settings

{
  "database.user": "C##DEBEZIUM",
  "database.password": "StrongPassword",
  "database.dbname": "ORCLPDB1",
  "database.pdb.name": "ORCLPDB1"
}
{
  "name": "oracle-connector",
  "config": {
    "connector.class": "io.debezium.connector.oracle.OracleConnector",
    "tasks.max": "1",

    "database.hostname": "192.168.1.225",
    "database.port": "1521",


    "database.dbname": "ORCLPDB1",
    "database.pdb.name": "ORCLPDB1",


   "database.user": "C##DEBEZIUM",
   "database.password": "StrongPassword",
   "oracle.proxy.user.name": "PDBZIUM",

    "topic.prefix": "oraclecdc",

    "database.connection.adapter": "logminer",

    "schema.history.internal.kafka.bootstrap.servers": "192.168.1.226:9092",
    "schema.history.internal.kafka.topic": "oracle.schema-changes",

    "include.schema.changes": "true",
    "tombstones.on.delete": "false",

    "log.mining.strategy": "online_catalog",
    "log.mining.continuous.mine": "true",
    "log.mining.archive.log.only.mode": "false"
  }
}

5. Notes

  • This configuration works for Oracle 19c + Debezium 3.3.
  • It supports LogMiner CDC for Kafka Connect.
  • Ensure redo logs and archive logs are enabled.