Skip to main content
Version: 0.6 (Latest)

Oracle

Oracle is supported as a source database — the database LakeXpress extracts data from. It cannot be used as the LakeXpress DB.

Connection Parameters​

ParameterRequiredDescription
ds_typeYesMust be "oracle"
auth_modeYesMust be "classic"
usernameYesOracle username
passwordYesOracle password
serverNoHostname or IP (host is also accepted; default: localhost)
portNoPort (default: 1521)
databaseYesService name (a SID is not accepted: LakeXpress connects with service_name)
lib_dirNoClient library directory (thick mode)
use_adbcNoExport through FastBCP's ADBC driver (default: false, FastBCP's native driver). Set at the same level as ds_type, not inside info. See ADBC Export

Thin vs Thick Mode​

Thin Mode (Recommended):

  • No client libraries required
  • Oracle 12.1+
  • Omit lib_dir

Thick Mode:

  • Required for Oracle 11.2 and earlier
  • Requires Oracle Instant Client
  • Set lib_dir to the Instant Client directory

Required Permissions​

LakeXpress uses RowID-based parallel exports to read Oracle tables efficiently. The database user needs catalog access for metadata discovery (table structure, RowID ranges, and export method selection):

-- As Oracle DBA (e.g., sys as sysdba)
GRANT SELECT_CATALOG_ROLE TO your_username;

Example: Thin Mode​

{
"oracle_prod": {
"ds_type": "oracle",
"auth_mode": "classic",
"info": {
"username": "$env{LX_ORACLE_USER}",
"password": "$env{LX_ORACLE_PASSWORD}",
"server": "oracle-prod.company.com",
"port": 1521,
"database": "PRODPDB"
}
}
}

Example: Thick Mode​

{
"oracle_legacy": {
"ds_type": "oracle",
"auth_mode": "classic",
"info": {
"username": "$env{LX_ORACLE_USER}",
"password": "$env{LX_ORACLE_PASSWORD}",
"server": "oracle-11g.company.com",
"port": 1521,
"database": "LEGACY",
"lib_dir": "/opt/oracle/instantclient_19_8"
}
}
}

ADBC Export​

With "use_adbc": true, FastBCP reads the source through the arpe.io ADBC driver for Oracle (connection type adbc_oracle) instead of its native ODP.NET driver. It needs no Oracle Instant Client, whatever lib_dir says: lib_dir only applies to LakeXpress's own connection. ADBC is not the default for Oracle yet: the driver writes NUMBER columns without precision as text, while the publish targets declare them decimal(38,18). Use it for sources without such columns, or exports you do not publish. The setting only changes the export: LakeXpress still discovers schemas and tables with its own driver. The run log shows the path once per run, e.g. Source extraction: adbc_oracle (ADBC).

{
"oracle_adbc": {
"ds_type": "oracle",
"auth_mode": "classic",
"use_adbc": true,
"info": {
"username": "$env{LX_ORA_USER}",
"password": "$env{LX_ORA_PASSWORD}",
"server": "oracle-prod.company.com",
"port": 1521,
"database": "ORCLPDB1"
}
}
}

Network encryption and data integrity default to accepted. To change them, set the FASTBCP_ADBC_ENCRYPTION and FASTBCP_ADBC_DATA_INTEGRITY environment variables before running LakeXpress.

The Parquet files written through ADBC differ from the native ones:

  • NUMBER without precision is text (the native driver writes decimal(38,18)).
  • NUMBER(p) with p up to 9 is a 64-bit integer (the native driver writes a 32-bit integer).
  • TIMESTAMP keeps microseconds (the native driver writes milliseconds).
  • TIMESTAMP WITH TIME ZONE is a UTC timestamp (the native driver writes text such as 1/1/1970 12:00:00 AM +00:00).
  • DATE and TIMESTAMP before 1582-10-15, which Oracle stores on the Julian calendar, are converted to the same day on the Gregorian calendar: 0001-01-01 becomes 0000-12-30. The native driver keeps the label, which is a different day.

The ADBC driver needs its own license. It is included in the license file that arpe.io sends for LakeXpress, and LakeXpress passes it to FastBCP. If your license file has no ADBC block, provide the driver license with ARPEIO_ADBC_LICENCE (license text) or ARPEIO_ADBC_LICENCE_FILE (path). Without either, the sync stops before the export with exit code 13 (LICENSE_ERROR). A license file issued before 2026-10-26 has no FastBCP block: FastBCP then uses its own FastBCP.lic, which must carry the ADBC block. See License Information.

ADBC drivers ship with FastBCP for linux-x64 and win-x64. See ADBC Extraction for the other sources.

Troubleshooting​

ORA-12154: TNS could not resolve connect identifier: Verify service name, check tnsnames.ora, try IP instead of hostname, confirm listener is running.

ORA-28000: account is locked:

ALTER USER your_username ACCOUNT UNLOCK;

Thick mode library not found: Verify lib_dir path, confirm Instant Client is installed, check file permissions, set LD_LIBRARY_PATH on Linux.

See Also​

Copyright © 2026 Architecture & Performance.