2

I am using Oracle 11g's Change Data Capture to track changes on a database table. I am using synchronous mode to minimize latency. Here's an example to illustrate my problem:

Published_Table

  • important_column_a
  • important_column_b
  • useless_column_c

Now, both important_column_a and important_column_b are included in the PUBLICATION and SUBSCRIPTION. The third column, useless_column_c, is of no consequence and is not included in either PUBLICATION or SUBSCRIPTION.

My problem is that any time a change is made to the unpublished column (useless_column_c), a record is written to both the CDC table and the resultant CDC View on the subscription. This happens even if no other change is made to the table aside from the unpublished column.

The Published_Table experiences a significant number of transactions, but only changes to the subscribed columns require additional processing. As Oracle is sending every change across to the subscription, the result is an extensive amount of overhead as the subscriber sifts through what amounts to extra "noise."

Is there any way around this?

1

I imagine you've enabled suplemental logging for the table on all columns, instead of just the ones that you require to be tracked.

eg:

ALTER TABLE philtest ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

vs:

ALTER TABLE philtest
ADD SUPPLEMENTAL LOG GROUP log_group_philtest
    (PHIL_COLA, PHIL_COLB) ALWAYS;
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.