Hi
I am using Debezium to transfer data from Postgres to Kafka to Oracle.I am receiving events into kafka topics for all delete , update and insert operation.
I am using the confluent-3.3.0, oracle 11g and ojdbc6.jar .
with "insert.mode" as "upsert", both insert and update are not working.
and with "insert.mode" as "insert", only insert is working . As update topic recieve update event , it prints below error.
---------------
java.sql.BatchUpdateException: ORA-00001: unique constraint (OWB.SYS_C0094697) violated
at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseError.java:629)
at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePreparedStatement.java:9409)
at oracle.jdbc.driver.OracleStatementWrapper.executeBatch(OracleStatementWrapper.java:211)
at io.confluent.connect.jdbc.sink.BufferedRecords.flush(BufferedRecords.java:101)
at io.confluent.connect.jdbc.sink.BufferedRecords.add(BufferedRecords.java:79)
at io.confluent.connect.jdbc.sink.JdbcDbWriter.write(JdbcDbWriter.java:62)
at io.confluent.connect.jdbc.sink.JdbcSinkTask.put(JdbcSinkTask.java:66)
at org.apache.kafka.connect.runtime.WorkerSinkTask.deliverMessages(WorkerSinkTask.java:435)
at org.apache.kafka.connect.runtime.WorkerSinkTask.poll(WorkerSinkTask.java:251)
at org.apache.kafka.connect.runtime.WorkerSinkTask.iteration(WorkerSinkTask.java:180)
at org.apache.kafka.connect.runtime.WorkerSinkTask.execute(WorkerSinkTask.java:148)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:146)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:190)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
[2018-06-12 09:53:09,220] ERROR Task oracle-sink-connector-0 threw an uncaught and unrecoverable exception (org.apache.kafka.connect.runtime.WorkerSinkTask:455)
org.apache.kafka.connect.errors.ConnectException: java.sql.BatchUpdateException: ORA-00001: unique constraint (OWB.SYS_C0094697) violated
----------------------------------------
Below is the configuration for oracle sink connector
curl -X POST \
-H 'accept: application/json' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '
{
"name": "oracle-sink-connector",
"config": {
"connector.class": "io.confluent.connect.jdbc.JdbcSinkConnector",
"tasks.max": "1",
"topics": "PAYMENT",
"connection.url": "xxx",
"connection.user": "xxx",
"connection.password": "xxx",
"transforms": "unwrap",
"transforms.unwrap.type": "io.debezium.transforms.UnwrapFromEnvelope",
"insert.mode": "upsert",
"pk.fields": "id",
"pk.mode": "record_value",
"max.retries":3,
"batch.size":1
}
}
'
-----------------
Although , when I was using the oracle 12g, ojdbc7.jar and confulent-4.1.0 , Both insert and update were working fine.
Any suggestion ?
--