Create Oracle User and Grant Required Permissions
Use LogMiner (Recommended for 3.3.x)
-------PDB
CREATE USER debezium IDENTIFIED BY "StrongPassword";
GRANT CONNECT, RESOURCE TO debezium;
GRANT CREATE SESSION TO debezium;
GRANT SELECT ON V_$DATABASE TO debezium;
GRANT SELECT ON V_$LOG TO debezium;
GRANT SELECT ON V_$LOGFILE TO debezium;
GRANT SELECT ON V_$ARCHIVED_LOG TO debezium;
GRANT SELECT ON V_$INSTANCE TO debezium;
GRANT FLASHBACK ANY TABLE TO debezium;
GRANT SELECT ANY TRANSACTION TO debezium;
GRANT SELECT ANY DICTIONARY TO debezium;
GRANT LOGMINING TO debezium;
---------CDB
ALTER DATABASE FORCE LOGGING;
SHOW PARAMETER db_recovery_file_dest;
SHOW PARAMETER db_recovery_file_dest_size;
Also make sure ARCHIVELOG mode is enabled:
If not enabled:
Enable Supplemental Logging (MANDATORY)
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
Check status:
SELECT supplemental_log_data_min, supplemental_log_data_pk,
supplemental_log_data_fk, supplemental_log_data_ui,
supplemental_log_data_all
FROM v$database;
Enable GoldenGate Replication Flag (Needed for Debezium LogMiner)
ALTER SYSTEM SET enable_goldengate_replication=TRUE SCOPE=BOTH;
Create Debezium Oracle Connector Config
{
"name": "oracle-connector",
"config": {
"connector.class": "io.debezium.connector.oracle.OracleConnector",
"tasks.max": "1",
"database.hostname": "192.168.1.225",
"database.port": "1521",
"database.user": "debezium",
"database.password": "StrongPassword",
"database.dbname": "ORCLPDB1",
"topic.prefix": "oracle",
"database.connection.adapter": "logminer",
"database.history.kafka.bootstrap.servers": "192.168.1.226:9092",
"database.history.kafka.topic": "schema-changes.oracle",
"snapshot.mode": "initial"
}
}
Verify Connector
curl http://localhost:8083/connectors
curl http://localhost:8083/connectors/oracle-connector/status
Kafka Topics Created
/opt/kafka/bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
Consume CDC Message
/opt/kafka/bin/kafka-console-consumer.sh \
--bootstrap-server localhost:9092 \
--topic mysqlserver1.mydb.customers \
--from-beginning
Delete Connector
curl -X DELETE http://localhost:8083/connectors/mysql-connector
Restart Connector
curl -X POST http://localhost:8083/connectors/mysql-connector/restart