We were asked by one of our customers if our messaging based framework can utilize Oracle Streams instead of GoldenGate which requires a separate license.
After several days of investigation, we don’t think Oracle Streams is working in this use case.
The Oracle Streams does not fit our CDC solution. It can capture the data change to the queue, but the queue is oracle database queue.
Oracle Steams use Oracle ANYDATA queue for the message store.
The easiest way to create an ANYDATA queue is to use the SET_UP_QUEUE procedure in the DBMS_STREAMS_ADM package. This procedure enables you to specify the following settings for the ANYDATAqueue it creates:
• The queue table for the queue
• A storage clause for the queue table
• The queue name
• A queue user that will be configured as a secure queue user of the queue and granted ENQUEUE and DEQUEUE privileges on the queue
• A comment for the queue
For example, run the following procedure to create an ANYDATA queue with the SET_UP_QUEUE procedure:
And if we want to use other messaging systems as a message broker for CDC, we need to use Oracle Message Gateway. Messaging Gateway enables communication between applications based on non-Oracle messaging systems and Oracle Streams AQ.
But the Oracle Message Gateway currently only supports the integration of Oracle Streams AQ with applications based on WebSphere MQ 6.0 and TIB/Rendezvous 7.2.
It doesn’t support Kafka (framework default message broker for CDC) for now.
If we simply want to read (select query) and push to Kafka, simple JDBC code is enough; Our frameworks (light-eventuate-4j / light-tram-4j) has provided the Oracle DB pulling CDC solution.
To move change data in real-time from Oracle transactional databases to Kafka you need to first use a Change Data Capture (CDC) proprietary tool which requires purchasing a commercial license such as Oracle’s Golden Gate, Attunity Replicate, Dbvisit Replicate or Striim. Then, you can leverage the Kafka Connect connectors that they all provide.