Skip to main content

Overview

The OLake Oracle Source connector supports two synchronization modes. It offers features like parallel chunking, checkpointing, and automatic resume for failed full loads. This connector can be used within the OLake UI or run locally via Docker for open-source workflows.

Sync Modes Supported​

  • Full Refresh
  • Full Refresh + Incremental

Prerequisites​

Version Prerequisites​

Oracle Database 11g or above (tested with Oracle 19c, and 23ai)

Connection Prerequisites​

  • Following permissions need to be granted to the user which will be used to connect Oracle DB with OLake.

    1. CREATE SESSION​

    Use: Fundamental system privilege that allows a user to log in (connect) to the Oracle database.
    Why is it required?: To connect to the database (DBeaver, SQL Developer, OLake, etc.).
    Grant Query:

        GRANT CREATE SESSION TO <username>;

    2. EXECUTE ON DBMS_FLASHBACK​

    Use: Oracle-supplied PL/SQL package that allows users to "flash back" their session to a previous point in time or SCN.
    Why is it required?: Used to fetch the SCN for the table.
    Grant Query:

        GRANT EXECUTE ON DBMS_FLASHBACK TO <username>;

    3. SELECT ON <table>​

    Use: Grants read-only access to run SELECT queries on the table owned by the schema owner.
    Why is it required?: Required to access the table for discovery and chunk iteration.
    Grant Query:

        GRANT SELECT ON <table_owner>.<table_name> TO <username>;

    4. FLASHBACK ON <table>​

    Use: Grants the FLASHBACK object privilege for the table, allowing querying of historical data using AS OF SCN.
    Why is it required?: Required when running queries like: SELECT * FROM <table> AS OF SCN <scn>
    Grant Query:

        GRANT FLASHBACK ON <table_owner>.<table_name> TO <username>;

After initial Prerequisites are fulfilled, the configurations for Oracle can be configured.


Configuration​

1. Navigate to the Source Configuration Page​

  1. Complete the OLake UI Setup Guide
  2. After logging in to the OlakeUI, select the Sources tab from the left sidebar.
  3. Click Create Source on the top right corner.
  4. Select Oracle from the connector dropdown
  5. Provide a name for this source.

2. Provide Configuration Details​

  • Enter Oracle DB credentials.
    Source tab
FieldDescriptionExample Value
Host requiredHostname or IP address of the Oracle database server.oracle-host
Port requiredTCP port on which the Oracle listener is accepting connections.1521
Service Name^Oracle service name that identifies the specific database service to connect to.oracle-service-name
SID^Oracle DB sid that uniquely identifies the database instance.oracle-sid
Username requiredDatabase user used to authenticate the connection.oracle-user
PasswordPassword for the specified user.oracle-password
Max ThreadsMaximum number of worker threads the connector can spin up for parallel tasks.10
Retry CountNumber of times the connector will retry a failed operation before giving up.0
JDBC URL ParametersExtra JDBC URL parameters for fine-tuning the connection.{"TIMEOUT": "86400"}
SSL ModeSSL configuration for the database connection. Contains details such as the SSL mode.disable

^ Only one among service_name or sid is required

Oracle Username Case Sensitivity

Oracle Database automatically converts unquoted lowercase usernames to uppercase. If a connection error occurs, try changing the username to all uppercase.

3. Test Connection​

  • Once the connection is validated, the Oracle source is created. Jobs can then be configured using this source.

  • In case of connection failure, refer to the Troubleshooting section.


Datatype mapping​

Oracle Data TypesDestination Data Type
NUMBER(n,0) where n<=9int
NUMBER(n,0) where n>9bigint
NUMBER(n,m) where m!=0, BINARY_DOUBLE, FLOATdouble
BINARY_FLOATfloat
DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIMEZONEtimestamptz
VARCHAR2, NVARCHAR2, CLOB, NCLOB, LONG, RAW, LONG RAW, BLOB, BFILE, INTERVAL DAY TO SECOND, INTERVAL YEAR TO MONTH, CHAR(* BYTE)string
timestamptz timezone

OLake always ingests timestamp data in UTC format, independent of the source timezone.


Troubleshooting​

1. Sync Failure Due to I/O Timeout​

2025-06-30T14:12:18Z FATAL error occurred while reading records: error occurred while waiting for context groups: failed to get or split chunks: failed to get next row id: read tcp 192.xx.x.xxx:xxxxx->65.x.xxx.xxx:xxxx: i/o timeout

Cause: Oracle databases often enforce an idle timeout policy, typically between 10 to 15 minutes, after which inactive sessions are terminated. For large tables (e.g., with 10M+ rows), the chunk splitting and row-reading operations may take longer than this default threshold, leading to a connection timeout.

Solution: Set the TIMEOUT parameter (in seconds) to extend the idle timeout:

  • In OLake UI, add it under the JDBC URL Parameters textbox while creating or editing the Oracle source.

Source tab

  • In OLake CLI, Add it under the jdbc_url_params field in your config.json.
"jdbc_url_params": {
"TIMEOUT": "86400" /* Timeout in seconds; here, 24 hours (24 Γ— 60 Γ— 60) */
}

If the issue is not listed here, post the query on Slack to get it resolved within a few hours.

Changelog​

Date of ReleaseVersionDescription
27 August 20250.1.11override default timeout in Discover


πŸ’‘ Join the OLake Community!

Got questions, ideas, or just want to connect with other data engineers?
πŸ‘‰ Join our Slack Community to get real-time support, share feedback, and shape the future of OLake together. πŸš€

Your success with OLake is our priority. Don’t hesitate to contact us if you need any help or further clarification!