Oracle DB
Features
| Feature | Supported | Notes |
|---|---|---|
| Full Refresh Sync | Yes | |
| Incremental - Append Sync | Yes | |
| Replicate Incremental Deletes | No | |
| Logical Replication (WAL) | No | |
| TLS Support | Yes | |
| SSH Tunnel Connection | Yes | |
| LogMiner | No | |
| Flashback | No | |
| Namespaces | Yes | Enabled by default |
The Oracle source does not alter the schema present in your database. Depending on the destination connected to this source, however, the schema may be altered. See the destination's documentation for more details.
Prerequisites
- Oracle Database
11gor above (tested with Oracle 11g, 12c, 18c, 19c, and 21c) - Allow connections from Airbyte to your Oracle database (if they exist in separate VPCs)
- Create a dedicated read-only Airbyte user with access to all tables needed for replication
Setup guide
Step 1: Confirm your database is accessible from the machine running Airbyte
This is dependent on your networking setup. The easiest way to verify if Airbyte is able to connect to your Oracle instance is via the check connection tool in the UI.
Step 2: Create a dedicated read-only user with access to the relevant tables (recommended but optional)
This step is optional but highly recommended to allow for better permission control and auditing. Alternatively, you can use Airbyte with an existing user in your database.
To create a dedicated database user, run the following commands against your database:
CREATE USER airbyte IDENTIFIED BY <your_password_here>;
GRANT CREATE SESSION TO airbyte;
Next, grant the user read-only access to the relevant tables. The simplest way is to grant read access to all tables in the schema as follows:
GRANT SELECT ANY TABLE TO airbyte;
Or you can be more granular:
GRANT SELECT ON "<schema_a>"."<table_1>" TO airbyte;
GRANT SELECT ON "<schema_b>"."<table_2>" TO airbyte;
Your database user should now be ready for use with Airbyte.
Step 3: Configure connection type and schemas
Connection Type: Choose between Service Name and System ID (SID):
- Service Name: Recommended for modern Oracle installations (Oracle 8i and later). A service name is a logical representation of a database and can be used for connection load balancing and failover.
- System ID (SID): Used for legacy Oracle instances. A SID uniquely identifies a specific Oracle database instance on a server.
Schemas: Specify the schemas Airbyte should sync from. Case sensitive. Defaults to the upper-cased username if empty. If the user does not have access to the configured schemas, no tables will be discovered.
Step 4: Additional JDBC configuration (optional)
You can provide additional JDBC URL parameters in the JDBC URL Params field to customize the connection behavior. Parameters should be formatted as key=value pairs separated by &. For example:
defaultRowPrefetch=20&oracle.net.CONNECT_TIMEOUT=10000&oracle.net.READ_TIMEOUT=30000
Common useful parameters:
defaultRowPrefetch: Number of rows to prefetch (default: 10)oracle.net.CONNECT_TIMEOUT: Connection timeout in millisecondsoracle.net.READ_TIMEOUT: Socket read timeout in milliseconds
Connection via SSH Tunnel
Airbyte can connect to an Oracle instance through an SSH tunnel. This is useful when the database is not directly accessible from the public internet, for example because it does not have a public IP address or your security policy restricts direct connections.
When using an SSH tunnel, Airbyte connects to an intermediate server (a bastion server) that has direct access to the database. Airbyte connects to the bastion and then asks the bastion to connect directly to the database.
To configure an SSH tunnel:
- Configure all fields for the source as you normally would, except SSH Tunnel Method.
- SSH Tunnel Method defaults to No Tunnel (meaning a direct connection). To use an SSH tunnel, choose SSH Key Authentication or Password Authentication.
- Choose Key Authentication if you will use an RSA private key for the SSH tunnel (see below for more information on generating this key).
- Choose Password Authentication if you will use a password for the SSH tunnel.
- SSH Tunnel Jump Server Host is the hostname or IP address of the bastion server.
- SSH Connection Port is the port on the bastion server for the SSH connection. The default SSH port is
22. - SSH Login Username is the username Airbyte uses to connect to the bastion server. This is not the Oracle database username.
- If you are using Password Authentication, set Password to the password for the bastion server OS user. If you are using SSH Key Authentication, leave this blank.
- If you are using SSH Key Authentication, set SSH Private Key to the RSA private key for the SSH connection. Provide the full contents of the key file, starting with
-----BEGIN RSA PRIVATE KEY-----and ending with-----END RSA PRIVATE KEY-----.
Generating an SSH Key Pair
The connector expects an RSA key in PEM format. To generate this key:
ssh-keygen -t rsa -m PEM -f myuser_rsa
This produces the private key in PEM format and the public key in the standard format used by the authorized_keys file on your bastion host. Add the public key to the bastion host for the user you want Airbyte to connect as. Copy and paste the private key into the Airbyte connector configuration.
Data Type Mapping
Oracle data types are mapped to the following data types when synchronizing data.
Note: The connector automatically handles LONG and LONG RAW columns by setting the Oracle JDBC property oracle.jdbc.useFetchSizeWithLongColumn=true. Oracle recommends avoiding LONG and LONG RAW columns in favor of LOB types (CLOB, BLOB) for new applications.
| Oracle Type | Resulting Type | Notes |
|---|---|---|
binary_double | number | |
binary_float | number | |
blob | string | |
char | string | |
char(3 char) | string | |
clob | string | |
date | string | |
decimal | number | |
float | number | |
float(5) | number | |
integer | number | |
interval year to month | string | |
long raw | string | |
number | number | |
number(6, 2) | number | |
nvarchar(3) | string | |
raw | string | |
timestamp | string | |
timestamp with local time zone | string | |
timestamp with time zone | string | |
varchar2 | string | |
varchar2(256) | string | |
xmltype | string |
If you do not see a type in this list, assume that it is coerced into a string. We are happy to take feedback on preferred mappings.
Encryption options
The connector supports three encryption methods. On Airbyte Cloud, encryption is required. You must choose either Native Network Encryption or TLS. On Self-Managed Airbyte, all three options are available.
-
Unencrypted (Self-Managed only): The connection uses the TCP protocol without encryption. All data is transmitted in plain text. Only use this option in secure, trusted network environments.
-
Native Network Encryption (NNE): Provides database connection encryption without the configuration overhead of TLS and without requiring different ports. The connector sets
SQLNET.ENCRYPTION_CLIENT=REQUIRED, meaning only encrypted traffic is accepted. Choose from these encryption algorithms:- AES256: Advanced Encryption Standard with 256-bit keys (recommended)
- RC4_56: RC4 stream cipher with 56-bit keys (legacy, less secure)
- 3DES168: Triple DES with 168-bit keys (legacy, less secure)
-
TLS Encrypted (verify certificate): Uses the TLS protocol with certificate verification for maximum security. Requires you to provide the server's SSL certificate in PEM format in the SSL PEM file field. The certificate must be valid and trusted.
IP allow list
If you use Airbyte Cloud and your organization restricts access to specific IPs, add the Airbyte Cloud IP addresses to your allow list.
Reference
Config fields reference
Changelog
Expand to review
| Version | Date | Pull Request | Subject |
|---|---|---|---|
| 0.5.8 | 2026-03-25 | 75410 | Fold strict-encrypt variant into main connector; encryption is now required on Airbyte Cloud |
| 0.5.7 | 2025-07-15 | 63326 | Fix publishing flow. |
| 0.5.6 | 2025-07-10 | 62920 | Convert to new gradle build flow |
| 0.5.5 | 2025-07-10 | 62921 | Convert to new gradle build flow |
| 0.5.3 | 2024-12-18 | 49883 | Use a base image: airbyte/java-connector-base:1.0.0 |
| 0.5.2 | 2024-02-13 | 35225 | Adopt CDK 0.20.4 |
| 0.5.1 | 2024-01-24 | 34453 | bump CDK version |
| 0.5.0 | 2023-12-18 | 33485 | Remove LEGACY state |
| 0.4.0 | 2023-06-26 | 27737 | License Update: Elv2 |
| 0.3.25 | 2023-06-20 | 27212 | Fix silent exception swallowing in StreamingJdbcDatabase |
| 0.3.24 | 2023-03-22 | 20760 | Removed redundant date-time datatypes formatting |
| 0.3.23 | 2023-03-06 | 23455 | For network isolation, source connector accepts a list of hosts it is allowed to connect to |
| 0.3.22 | 2022-12-14 | 20346 | Consolidate date/time values mapping for JDBC sources |
| 2022-10-13 | 15535 | Update incremental query to avoid data missing when new data is inserted at the same time as a sync starts under non-CDC incremental mode | |
| 0.3.21 | 2022-09-01 | 16238 | Emit state messages more frequently |
| 0.3.20 | 2022-08-18 | 14356 | DB Sources: only show a table can sync incrementally if at least one column can be used as a cursor field |
| 0.3.19 | 2022-08-03 | 14953 | Use Service Name to connect to database |
| 0.3.18 | 2022-07-14 | 14574 | Removed additionalProperties:false from JDBC source connectors |
| 0.3.17 | 2022-06-24 | 14092 | Introduced a custom jdbc param field |
| 0.3.16 | 2022-06-22 | 13997 | Fixed tests |
| 0.3.15 | 2022-04-29 | 12480 | Query tables with adaptive fetch size to optimize JDBC memory consumption |
| 0.3.14 | 2022-02-21 | 10242 | Fixed cursor for old connectors that use non-microsecond format. Now connectors work with both formats |
| 0.3.13 | 2022-02-18 | 10242 | Updated timestamp transformation with microseconds |
| 0.3.12 | 2022-02-14 | 10256 | Add -XX:+ExitOnOutOfMemoryError JVM option |
| 0.3.11 | 2021-12-24 | 8958 | Add support for JdbcType.ARRAY |
| 0.3.10 | 2021-12-07 | 8582 | Update connector fields title/description |
| 0.3.9 | 2021-12-01 | 8371 | Fixed incorrect handling "\n" in ssh key |
| 0.3.8 | 2021-10-13 | 7125 | Fix incorrect handling of LONG RAW data type |
| 0.3.7 | 2021-10-01 | 6616 | Added network encryption options |
| 0.3.6 | 2021-09-30 | 6585 | Improved SSH Tunnel key generation steps |
| 0.3.5 | 2021-09-22 | 6356 | Added option to connect to DB via SSH. |
| 0.3.4 | 2021-09-01 | 6038 | Remove automatic filtering of system schemas. |
| 0.3.3 | 2021-09-01 | 5779 | Ability to only discover certain schemas. |
| 0.3.2 | 2021-08-13 | 4699 | Added json config validator. |