> ## Documentation Index
> Fetch the complete documentation index at: https://www.integrate.io/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ETL: Oracle Snapshot CDC Source

> How to configure the Oracle Snapshot CDC source component to read changed records from Oracle in your Integrate.io ETL pipeline.

Use the Oracle (Snapshot CDC) source component to read only the records that have changed in your Oracle tables since the previous pipeline run, instead of reprocessing the entire table every time. The component produces two outputs: **Upserted records** (new and updated rows) and **Deleted records** (rows removed from the source).

## Connection Setup

Before reading changes, set up your Oracle connection. See [Connecting to Oracle](/etl/allowing-integrateio-etl-access-to-oracle-databases) for the credentials and network access required. Once the connection exists, add the **Oracle (Snapshot CDC)** source component to your pipeline and select it.

## Snapshot Storage

Oracle Snapshot CDC uses **File Based** snapshot storage. The snapshot of your previous run is stored as a Parquet file on Integrate.io managed cloud storage, which means:

* Only read access to your Oracle database is required.
* No snapshot tables are created in your source database.
* On the first run, every current record is treated as upserted because there is no previous snapshot to compare against.

<Note>
  Database (table-based) snapshot storage is only available for SQL Server connections. For Oracle, File Based storage is the only option, and you do not need to configure an S3 connection of your own.
</Note>

## Change Detection

Choose how the component decides whether a row has changed:

* **Primary Key**: matches rows by a unique identifier column (for example `id` or `transaction_id`) and detects updates by comparing the remaining column values. Best when the table has a reliable key.
* **Composite Hash**: builds a hash from all or selected columns and compares hashes between runs. Best when the table has no reliable primary key.

With File Based storage you can also switch the **Source Mode** from **Table** to **Query** to track changes across a custom SQL query, including JOINs across multiple tables.

## Example

Track changes on a transactions table for downstream analytics:

* **Source table**: `transactions`
* **Method**: Primary Key
* **Primary key**: `transaction_id`
* **Upserted records**: load into the analytics warehouse
* **Deleted records**: flag as reversed in the warehouse

## Full Configuration Reference

<Card title="Snapshot CDC Source reference" icon="book" href="/etl/using-components-cdc-database-source" horizontal>
  Configuration steps, change detection methods, query mode, best practices, troubleshooting, and limitations that apply to every Snapshot CDC source.
</Card>
