changedatacapture.net

Oracle CDC EBR Compatibility Lab

Interactive analysis of CDC tools, online DDL, and Edition-Based Redefinition.

Oracle CDC: Online DDL and EBR Compatibility

Analyze how GoldenGate, XStream, and Debezium handle Oracle Edition-Based Redefinition (EBR) and online DDL. Compare supplemental logging strategies, EBR cutover risks, and configuration options for CDC pipelines through application upgrades.

The Compatibility Challenge

Why CDC, EBR, and online DDL create a multi-layer problem.

Three moving parts

All redo-based CDC tools read raw redo logs and depend on a stable data dictionary. Oracle's Edition-Based Redefinition (EBR) and online DDL modify that dictionary on a live system. How well a CDC tool handles this determines if the pipeline survives an application upgrade without data loss.

CDC tools

Mine redo logs. Expect a stable, consistent data dictionary for schema metadata.

EBR

Lets old and new application versions run simultaneously against the same database.

Online DDL

Modifies schema while DML continues. Requires a brief exclusive lock at completion.

The three tools

Oracle GoldenGate

Native EBR awareness. Integrated Extract captures edition context in trail file. The only tool that handles EBR cutovers automatically.

Oracle XStream

Built on Oracle Streams, deprecated since 11g. Cannot capture ALTER DATABASE DEFAULT EDITION. Not viable for new deployments.

Debezium (LogMiner)

Not EBR-aware. Session binds to edition at connect time. EBR cutover causes silent data loss on new columns.

Supplemental Logging

The mandatory prerequisite for all redo-based CDC.

Why it is required

Without supplemental logging, redo records for UPDATE and DELETE may not contain enough information to identify the affected row. Oracle records only the minimum data needed for its own crash recovery. Supplemental logging instructs it to include additional columns.

Two configuration levels

Database level

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA enables minimal supplemental logging. Required as a prerequisite for all finer-grained settings. Enabling it acquires a shared TX lock and waits for in-flight transactions to complete. After it completes, all DML cursors in the shared pool are invalidated, causing a brief re-parse spike.

Table or schema level

Enables logging of key columns for specific tables or schemas. Oracle follows a hierarchy: primary key first, then unique key, then all columns if neither exists.

Performance warning

Logging all columns is a performance anti-pattern. For a high-volume UPDATE on a 75-column table, enabling all-column supplemental logging increased redo size by over 300%. Key-based logging avoids this cost.

For GoldenGate, use ADD SCHEMATRANDATA rather than table-level ADD TRANDATA. It automatically covers all current and future tables in the schema and is a prerequisite for DDL replication.

EBR Architecture

How Edition-Based Redefinition works and what it means for CDC.

Three components

Editions

A private namespace for editioned objects. The default edition is ora$base. New editions are created as children of existing ones. Each database session runs in one edition. Different sessions can run in different editions concurrently.

Editioning views

Tables are non-editioned: shared globally across all editions. Only editioned objects (PL/SQL, views, synonyms) have per-edition versions. Developers create an editioning view over the base table. In the new edition, the view exposes the new column. In the old edition, the view hides it. Application code queries the view, not the table directly.

Cross-edition triggers

During the transition period when both application versions are live, cross-edition triggers synchronize data between old and new columns. Forward triggers fire on pre-upgrade DML and populate new columns. Reverse triggers propagate post-upgrade changes back to old columns for sessions still on the previous edition.

The cutover moment

EBR cutover is a single DDL statement:

ALTER DATABASE DEFAULT EDITION = new_edition_name;

New sessions connect to the new edition. Existing sessions remain on the old one until they disconnect. A CDC tool that cannot capture this statement loses its edition context the moment the cutover fires.

Online DDL and Lock Contention

"Online" does not mean lock-free.

The exclusive DDL lock

Oracle's online DDL allows schema modifications while DML continues, but at the completion of any online DDL operation, Oracle must acquire a brief exclusive DDL lock. A long-running transaction holding any lock on the object blocks this final phase.

While DDL waits, new DML sessions queue behind it, potentially stalling the application. CDC replication lag accumulates rapidly — the Extract process is starved of new redo. Once DDL completes, the connector faces a large backlog.

Oracle 23ai: Lock-Free Reservation

In Oracle 23ai, Lock-Free Reservation reduces this collateral damage. For numeric columns declared RESERVABLE, UPDATE statements do not take a standard row-level lock. The delta is recorded in a reservation journal and the lock is deferred until commit time.

If a long-running transaction blocks DDL's final lock, other sessions updating reservable columns in the same table can still proceed. The DDL still waits, but the blast radius is limited. GoldenGate 23ai explicitly supports capturing and replicating changes to reservable columns.

Oracle 19c mitigation

The recommended mitigation in 19c is to pause DML on the affected table, let the pipeline drain, execute the DDL, then resume. This is a controlled mini-outage rather than a silent one. Online DDL on 19c also has documented restrictions: ALTER TABLE ... MOVE PARTITION ONLINE is not permitted for index-organized tables or tables containing object types.

Tool: Oracle GoldenGate

The only CDC tool with native EBR awareness.

Gold standard

Recommended

GoldenGate's Integrated Extract captures the edition context of each DDL statement and stores it in the trail file. The Replicat process on the target issues ALTER SESSION SET EDITION before applying the DDL, keeping the target in sync with the source's edition state throughout an upgrade.

Full EBR lifecycle capture

GoldenGate captures the full EBR lifecycle with no manual connector intervention during cutover:

  • CREATE EDITION
  • Editioning view changes
  • Editioned PL/SQL object versions
  • ALTER DATABASE DEFAULT EDITION — the cutover command

Enhanced in Oracle 23ai to handle previously blocking online DDL operations.

Known bugs as signs of maturity

Bug 38105446

Extract abend during online DDL when a column was marked UNUSED and EXCLUDEHIDDENCOLUMNS was enabled. Patched.

Bug 35938237

Parallel Replicat unnecessarily invalidated its metadata cache on space management DDL. Patched.

Documented and patched. Oracle actively tests this scenario — this reflects maturity, not fragility.

Tool: Oracle XStream

Deprecated. Not viable for new deployments.

Not viable

Deprecated since 11g

XStream is built on Oracle Streams, deprecated as of Oracle 11g. It does not support ALTER DATABASE DDL commands. The outbound server ignores several DDL types including RENAME.

The EBR cutover problem

XStream cannot capture ALTER DATABASE DEFAULT EDITION, making it unable to track an EBR cutover. There is no workaround. An EBR cutover is invisible to XStream's outbound server.

Support status

XStream is included with Oracle Enterprise Edition at no additional license cost, but deprecated means no new feature development and eventual removal. Oracle does not recommend XStream for new deployments.

Tool: Debezium (LogMiner)

Architectural mismatch with EBR. Silent data loss on cutover.

Not EBR-aware

High Data Loss Risk

A connector session binds to the database's default edition at connect time. It has no mechanism to detect or respond to ALTER DATABASE DEFAULT EDITION.

When an EBR cutover occurs, the connector remains in the old edition context while new application sessions write data through new editioning views. Data written to new columns is invisible to the connector. This is not a bug — it is an architectural mismatch between a stateless external LogMiner client and Oracle's edition-scoped data model.

LogMiner strategy trade-offs

redo_log_catalog

Writes the data dictionary into the redo stream periodically. More reliable for schema changes but adds redo overhead to the source database.

online_catalog

Reads the live dictionary. Lower overhead but brittle: if the connector processes an archive log from before a DDL change, it uses the wrong dictionary version and can misinterpret data or fail.

hybrid

Attempts online catalog with fallback resolution. Adds complexity. Has had CPU overhead issues in recent releases.

Required EBR cutover procedure

Every EBR cutover requires these manual steps:

  1. Stop the connector
  2. Delete the schema history Kafka topic
  3. Restart the connector
  4. Trigger an incremental snapshot for affected tables

Data written to new columns during the outage window is lost. This stop-reset-restart cycle is also an opportunity for operator error.

Tool Comparison

GoldenGate, XStream, and Debezium across key EBR and DDL dimensions.

Feature strength (1 = poor, 5 = excellent)

Feature GoldenGate XStream Debezium
EBR awareness Native None None
ALTER DATABASE DEFAULT EDITION Captured and replicated Not supported Not detected
Online DDL handling High (enhanced in 23ai) Low Low (strategy-dependent)
EBR cutover Automatic Not possible Manual stop/reset/restart
Data loss risk on cutover None N/A (not viable) High
License Per-CPU Incl. with EE (deprecated) Apache 2.0 (free)

Configuration Recommendations

Three tiers based on EBR compatibility and production risk.

Gold standard

Oracle 23ai + GoldenGate 23ai

Enable ARCHIVELOG mode with FORCE LOGGING. Use schema-level supplemental logging: run ADD SCHEMATRANDATA <schema_name> in GGSCI for each application schema. Configure Integrated Extract with the DDL parameter in both Extract and Replicat parameter files.

DDLOPTIONS EXCLUDETAG '00' -- on Extract
DBOPTIONS SETTAG '00' -- on Replicat

This configuration handles EBR upgrades automatically. No manual intervention during cutover.

Viable production

Oracle 19c + GoldenGate 19c/21c

Same configuration as above. Higher risk due to 19c lock contention patterns. Required mitigations:

  • Test every DDL statement under production-equivalent load before deployment
  • Schedule DDL for low-traffic periods
  • Document a "pause DML" procedure for high-risk DDL on critical tables

Not recommended

Debezium with EBR

If Debezium is unavoidable, use log.mining.strategy=redo_log_catalog. Set snapshot.locking.mode=none. Run the initial snapshot during a period with no DML or DDL on captured schemas.

Accept that every EBR cutover requires a manual stop, schema history topic deletion, connector restart, and incremental snapshot. Accept that data written to new columns during the outage window is lost.

Related tools

Part of: Oracle CDC Oracle GoldenGate