Oracle CDC

The Micro-Integration for Oracle CDC captures changes (inserts, updates, deletes) from an Oracle database table (using Debezium) and streams them to a topic on an event broker service.

You can configure Oracle only as a source.

To configure the connection details for Oracle in your Micro-Integration, see Oracle CDC Connection Parameters.

You must also define at least one Micro-Integration Flow that specifies:

For message headers, see Oracle CDC Message Headers .

Oracle Database Prerequisites

Before you use the Micro-Integration for Oracle CDC, you must configure your Oracle database by completing the following steps:

Oracle Datatype Handling

Oracle's handling of booleans, large objects, and quoted identifiers affects what appears in CDC event payloads and how column names are represented. Depending on your schema, you may need to configure both the database and the Micro-Integration to get the expected output.

LOB and XMLTYPE Handling

Oracle treats large objects (LOBs) such as BLOB, CLOB, and XMLTYPE in a special way. When these columns are modified, Oracle generates multiple internal redo operations (INSERT + UPDATE + UPDATE) to write the LOB data. These operations always occur at the database level and are captured by LogMiner.

To handle this, you can use the following options:

  • lobEnabled

    Setting lobEnabled=true enables LOB processing in the Micro-Integration (using Debezium) so that supported LOB types (CLOB, BLOB, XMLTYPE) are properly serialized and included in the outgoing CDC event. We recommend setting lobEnabled=true by default, with the option for you to disable it if necessary.

  • columnExcludeList

    The columnExcludeList parameter allows you to exclude specific columns from the outgoing CDC message. This is useful when a column is too large (for example, a profile picture BLOB), the column is not needed downstream, or you want to reduce message size.

    Example:

    columnExcludeList=SCHEMA_B.COMMON_TYPES.PROFILE_PICTURE

    When combined with lobEnabled=true, the Micro-Integration removes the excluded LOB column from the final CDC payload.

These settings control how LOB/XMLTYPE fields appear in the final outgoing CDC message, but they do not prevent Oracle or LogMiner from processing internal LOB writes.

Even when a LOB column is excluded from the final payload, Oracle still writes all internal LOB redo records (INSERT and multiple UPDATE operations), and LogMiner continues to read these internal changes as usual. Micro-Integration for Oracle CDC processes these LOB operations internally and collapses them into a single logical CDC event. The filtering is applied only at the final stage by the Micro-Integration for Oracle CDC, which removes the excluded LOB column from the outgoing message. As a result, the database performs the full LOB write internally, but the excluded column does not appear in the final CDC event published.

Oracle Quoted vs. Nonquoted Identifiers

In Oracle, the behavior of column names depends on whether the identifier is created as a quoted or nonquoted identifier. This behavior is defined by the Oracle SQL Language Reference and directly affects how column names appear in CDC events:

  • Nonquoted Identifiers

    When an identifier is created without double quotes, Oracle treats it as a nonquoted identifier, which follows these rules:

    • A nonquoted identifier is not surrounded by any punctuation.

    • Nonquoted identifiers are automatically folded to uppercase.

    For example, when a column is created without quotes (column_2_decimal), Oracle stores it internally as COLUMN_2_DECIMAL. Oracle metadata exposes column names exactly as stored. As a result, the column is emitted in CDC events as COLUMN_2_DECIMAL (uppercase).

  • Quoted Identifiers

    When an identifier is created with double quotes, it becomes a quoted identifier, which preserves the letter case. A quoted identifier begins and ends with double quotation marks ("). If you name a schema object using a quoted identifier, then you must use the double quotation marks whenever you refer to that object.

    For example, when a column is created with quotes ("column_2_decimal"), Oracle stores it exactly as column_2_decimal (lowercase preserved). Oracle metadata exposes the column name exactly as stored. As a result, the column is emitted in CDC events as column_2_decimal (lowercase).

Oracle CDC Connection Parameters

The following table describes the connection parameters for Oracle CDC.

Field Description
Database Hostname The hostname of the Oracle database server.
Database Port The port of the Oracle database server.
Database DB Name (CDB/Service or SID) The Oracle container database service name or SID (e.g., ORCLCDB, FREE).
Pluggable Database (PDB) Name The Oracle pluggable database service name (e.g., ORCLPDB1, FREEPDB1).
Skip Delete Events Select to skip the processing of delete events from the database change stream.
Disable LOB Processing Select to disable capturing BLOB/CLOB/NCLOB values. LOB handling is enabled by default.
Authentication

The authentication scheme for connecting to Oracle:

  • Basic Authentication—Connect using an Oracle database username and password. For more information, see Basic Authentication.

  • Client Certificate Authentication—Connect using TLS or mTLS with an Oracle Wallet. For more information, see Client Certificate Authentication.

Additional Properties

(Optional) Any additional properties for the Micro-Integration that apply for all Flows. Click Add Context if you need to specify additional context properties. For more information, see Additional Properties.

Checkpoint Queue The name of the Last Value Queue (LVQ) on the Solace event broker to use for checkpointing. The LVQ stores information about the files that have been processed and the files that are currently being processed. The LVQ must exist on the same event broker and VPN as the target destination.
Auto Create Checkpoint Queue Select to automatically create the LVQ if it does not exist. The default value is false.

Basic Authentication

The following table describes the parameters for basic authentication.

Field Description
Username The Oracle database username.
Password The Oracle database password.

Client Certificate Authentication

This Micro-Integration supports TLS and mutual TLS (mTLS) connections to Oracle databases that use Oracle Wallet for TLS configuration. An Oracle Wallet is a password-protected container that stores the SSL/TLS certificates and keys that Oracle uses for secure connections. The connection uses the TCPS (TCP with SSL/TLS) protocol on port 2484 by default.

Choose TLS if your Oracle server is configured with a server-side certificate for connection encryption. Choose mTLS if your organization requires mutual authentication and you have a custom (non-auto-managed) Oracle Wallet.

Mutual TLS is not supported with auto-managed wallets, such as OCI-managed wallets. Auto-managed wallets do not allow private key export or client certificate import, which are required for mTLS.

  • TLS (one-way): Encrypts the connection and verifies the Oracle server's identity. Provide a truststore (JKS or PKCS12 format) containing the Oracle server's CA certificate, exported from the server-side Oracle Wallet. To export the truststore, use the orapki wallet export command or Oracle Wallet Manager.

  • Mutual TLS (mTLS): Provides two-way authentication. Requires a custom Oracle Wallet on the Oracle server. The Oracle server must have SSL_CLIENT_AUTHENTICATION=TRUE configured and the client certificate imported into the server-side Oracle Wallet. In addition to a truststore, provide a keystore (JKS or PKCS12 format) containing the client certificate and private key.

The following table describes the fields for client certificate authentication.

Field Description
Database URL

The Oracle TNS connection string. Must use the TCPS protocol. For example:

jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcps)(HOST=<hostname>)(PORT=2484))(CONNECT_DATA=(SERVICE_NAME=<service_name>)))

Username The Oracle database username.
Password The Oracle database password.
SSL Keystore (mTLS only) The keystore file (.jks or .p12) that contains the client certificate and private key.
Keystore Type (mTLS only) The format of the keystore file. Valid values: JKS, PKCS12.
Keystore Password (mTLS only, optional) The keystore password.
SSL Truststore The truststore file (.jks or .p12) that contains the server's certificate. Used to verify the identity of the Oracle server. Upload the truststore exported from the server-side Oracle Wallet. To export the truststore from the Oracle Wallet, use the orapki wallet export command or Oracle Wallet Manager.
Truststore Type The format of the truststore file. Valid values: JKS, PKCS12.
Truststore Password (Optional) The truststore password.

Micro-Integration Flow Parameters

You must configure the endpoint parameters for each Flow. Each Flow can have different settings, but they all share the connection details of the parent Micro-Integration.

Oracle CDC Source Parameters

The following table describes the parameters for configuring Oracle CDC as a source.

Field Description
Destination The Oracle table name, including the schema. You must specify the destination using the <schemaName>.<tableName> format.
Log Mining Flush Table Name The name of the flush table that LogMiner uses. This name must be unique across workflows and multiple instances of Micro-Integrations in the same Oracle database.

Additional Properties

(Optional) Any additional properties for the this Flow. Click Add Context if you need to specify additional context properties. For more information, see Additional Properties.

Additional Properties

Config Option Type Valid Values Default Value Description
snapshotMode String initial, schema_only, when_needed, never, no_data, initial_only no_data The criteria for running a snapshot upon startup of the Micro-Integration.
columnExcludeList String

A comma-separated list of columns to exclude from CDC events. Each entry must use the format:

<schema>.<table>.<column>

Columns listed here will be omitted from the event payload before it is published.

databaseConnectionAdapter String logminer, logminer_unbuffered, old, xstream logminer The CDC implementation strategy.
logMiningStrategy String online_catalog, redo_log_catalog, hybrid hybrid The LogMiner strategy.
logMiningSessionMaxMs Integer 300000 The maximum LogMiner session duration in milliseconds.
logMiningSleepTimeIncrementMs Integer 200 The sleep time increment for adaptive polling.
logMiningSleepTimeMaxMs Integer 3000 The maximum sleep interval (ms) between LogMiner polling cycles when backoff is applied.
logMiningSleepTimeMinMs Integer 1000 The minimum sleep interval (ms) between LogMiner polling cycles during low activity.
maxBatchSize Integer 2048 The maximum number of events to batch.
maxQueueSize Integer 8192 The maximum internal event queue size.
schemaNameAdjustmentMode String none Controls how schema and table names are normalized to make them valid logical identifiers.
includeSchemaChanges boolean true, false false When true, indicates that DDL schema changes will be captured.
tombstonesOnDelete boolean true, false false When true, indicates that tombstone events will be emitted on DELETE operations.
eventProcessingFailureHandlingMode String fail, warn, skip, ignore fail The error handling mode.
snapshotLockingMode String shared, minimal, extended, none shared Controls the type of locks acquired during the initial snapshot. shared prevents writes while reading tables, while minimal and none reduce locking at the risk of inconsistent snapshot reads.
tableExcludeList String A comma-separated list of tables to exclude.

Troubleshooting

The following troubleshooting tips might help you to resolve issues with this Micro-Integration. If problems persist, contact Solace.

Connection Fails After Configuring Client Certificate Authentication

Check the following:

  • Verify that the database URL uses the TCPS protocol and port 2484 (the default TLS port), not the standard Oracle listener port (1521).

  • Verify that the truststore and keystore files are in JKS or PKCS12 format.

  • If configuring mTLS, confirm that your Oracle Wallet is a custom wallet. Auto-managed wallets (such as OCI-managed wallets) do not support mTLS.

CDC Events Are Missing Column Values

If CDC events are missing values for one or more columns, verify that supplemental logging is enabled at both the database level and the table level. Without supplemental logging, LogMiner cannot capture the before and after values of individual columns. For setup instructions, see the Oracle Database Prerequisites section.

LOB Column Values Are Missing or Messages Are Too Large

Check the following:

  • If messages are too large or fail to publish because of LOB column data, use columnExcludeList to exclude the large LOB columns that are not needed downstream.

Column Names Have Unexpected Case in CDC Events

If downstream consumers cannot find columns by name, verify how the column was created in Oracle. Nonquoted identifiers are stored and emitted in uppercase (for example, COLUMN_NAME), while quoted identifiers preserve the original case (for example, column_name). Update your downstream mapping to match the case used in CDC events.