Oracle

Supermetal supports change data capture (CDC) using Oracle's native LogMiner for querying redo logs and enabling real-time Change Data Capture (CDC).

This guide walks you through configuring your Oracle database to work seamlessly with Supermetal.


Features

FeatureNotes
Initial Data Sync

Change Data Capture

Transactional Consistency

Catalog Support

Multi-tenant Architecture Support


Limitations

  • LogMiner:
    • Objects (table or columns) with names longer than 30 characters are not supported.
    • LOB data types: Partially supported. LogMiner only logs column values for LOB (XML, CLOB, NCLOB, and BLOB) data types if they are explicitly set or changed in a SQL statement.
    • Schema evolution support depends on LogMiner dictionary strategy:
      • Redo logs: Supported.
      • Online catalog: Partial support, limited to backwards-compatible changes.

Prerequisites

Before you begin, ensure you have:

  • Supported Oracle Version: Oracle Database 12c or higher

    Oracle RAC

    Oracle RAC (Real Application Clusters) is not currently supported.

  • Supported Platforms:

    • Self-Managed Oracle: Generic Oracle databases on-premises or self-hosted in the cloud
    • AWS RDS Oracle: Amazon RDS for Oracle instances (single tenant and multi-tenant)
  • Database Admin Access: Database master or admin user with sufficient privileges to create users, grant permissions, and modify database configuration parameters

  • Network Connectivity: Ensure that Supermetal's services can reach your Oracle database. You may need to configure security groups


Setup

Follow these steps to configure your Oracle source:

Create a user & grant permissions

-- Connect to your Oracle database as an Admin user

-- Create a dedicated user for Supermetal
CREATE USER SUPERMETAL_USER IDENTIFIED BY "strong-password";

-- Grant session and catalog permissions
GRANT CREATE SESSION TO SUPERMETAL_USER;
GRANT EXECUTE_CATALOG_ROLE TO SUPERMETAL_USER;

-- Grant LogMiner permissions
GRANT LOGMINING TO SUPERMETAL_USER;

-- Grant table access
GRANT SELECT ANY TABLE TO SUPERMETAL_USER;
GRANT SELECT ANY TRANSACTION TO SUPERMETAL_USER;

-- Grant access to LogMiner dictionary views
GRANT SELECT ON V_$DATABASE TO SUPERMETAL_USER;
GRANT SELECT ON V_$ARCHIVED_LOG TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOGMNR_LOGS TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOG TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOGFILE TO SUPERMETAL_USER;
GRANT SELECT ON V_$TRANSACTION TO SUPERMETAL_USER;
GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO SUPERMETAL_USER;
-- Required when using redo logs dictionary strategy (Oracle 19cU10+)
GRANT SELECT ON DBA_LOGMNR_DICTIONARY_BUILDLOG TO SUPERMETAL_USER;

-- Grant access to system views for metadata
GRANT SELECT ON DBA_OBJECTS TO SUPERMETAL_USER;
GRANT SELECT ON DBA_EXTENTS TO SUPERMETAL_USER;

-- Grant execute permissions for LogMiner
GRANT EXECUTE ON DBMS_LOGMNR TO SUPERMETAL_USER;
GRANT EXECUTE ON DBMS_LOGMNR_D TO SUPERMETAL_USER;

-- If TDE (Transparent Data Encryption) is enabled, also grant:
-- GRANT SELECT ON DBA_TABLESPACES TO SUPERMETAL_USER;
-- GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO SUPERMETAL_USER;
-- Connect to your Oracle database as an Admin user

-- Switch to the container (root) database
ALTER SESSION SET CONTAINER=CDB$ROOT;

-- Create a common user (must start with C##)
CREATE USER C##SUPERMETAL_USER IDENTIFIED BY "strong-password" CONTAINER=ALL;

-- Grant session and container permissions
GRANT CREATE SESSION, ALTER SESSION, SET CONTAINER TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT EXECUTE_CATALOG_ROLE TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Configure user to access all containers
ALTER USER C##SUPERMETAL_USER SET CONTAINER_DATA=ALL CONTAINER=CURRENT;

-- Grant LogMiner permissions
GRANT LOGMINING TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Grant table access across all containers
GRANT SELECT ANY TABLE TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ANY TRANSACTION TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Grant access to LogMiner dictionary views
GRANT SELECT ON V_$DATABASE TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVED_LOG TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_LOGS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOG TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOGFILE TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$TRANSACTION TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$CONTAINERS TO C##SUPERMETAL_USER CONTAINER=ALL;
-- Required when using redo logs dictionary strategy (Oracle 19cU10+)
GRANT SELECT ON DBA_LOGMNR_DICTIONARY_BUILDLOG TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Grant access to system views for metadata
GRANT SELECT ON DBA_OBJECTS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON DBA_EXTENTS TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Grant execute permissions for LogMiner
GRANT EXECUTE ON DBMS_LOGMNR TO C##SUPERMETAL_USER;
GRANT EXECUTE ON DBMS_LOGMNR_D TO C##SUPERMETAL_USER;

-- If TDE is enabled, also grant:
-- GRANT SELECT ON DBA_TABLESPACES TO C##SUPERMETAL_USER CONTAINER=ALL;
-- GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO C##SUPERMETAL_USER CONTAINER=ALL;
-- Connect to CDB root as an Admin user
ALTER SESSION SET CONTAINER=CDB$ROOT;

-- Create a common user (must start with C##)
CREATE USER C##SUPERMETAL_USER IDENTIFIED BY "strong-password" CONTAINER=ALL;

-- Grant session and container permissions
GRANT CREATE SESSION, ALTER SESSION, SET CONTAINER TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT EXECUTE_CATALOG_ROLE TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Configure user to access specific PDB (replace PDB_NAME with your PDB)
ALTER USER C##SUPERMETAL_USER SET CONTAINER_DATA=(CDB$ROOT, PDB_NAME) CONTAINER=CURRENT;

-- Grant LogMiner permissions
GRANT LOGMINING TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Switch to the specific PDB
ALTER SESSION SET CONTAINER=PDB_NAME;

-- Grant table access in the PDB
GRANT SELECT ANY TABLE TO C##SUPERMETAL_USER;
GRANT SELECT ANY TRANSACTION TO C##SUPERMETAL_USER;

-- Switch back to CDB root
ALTER SESSION SET CONTAINER=CDB$ROOT;

-- Grant access to LogMiner dictionary views
GRANT SELECT ON V_$DATABASE TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVED_LOG TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOGMNR_LOGS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOG TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$LOGFILE TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$TRANSACTION TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON V_$CONTAINERS TO C##SUPERMETAL_USER CONTAINER=ALL;
-- Required when using redo logs dictionary strategy (Oracle 19cU10+)
GRANT SELECT ON DBA_LOGMNR_DICTIONARY_BUILDLOG TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Grant access to system views for metadata
GRANT SELECT ON DBA_OBJECTS TO C##SUPERMETAL_USER CONTAINER=ALL;
GRANT SELECT ON DBA_EXTENTS TO C##SUPERMETAL_USER CONTAINER=ALL;

-- Grant execute permissions for LogMiner
GRANT EXECUTE ON DBMS_LOGMNR TO C##SUPERMETAL_USER;
GRANT EXECUTE ON DBMS_LOGMNR_D TO C##SUPERMETAL_USER;

-- If TDE is enabled, also grant:
-- GRANT SELECT ON DBA_TABLESPACES TO C##SUPERMETAL_USER CONTAINER=ALL;
-- GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO C##SUPERMETAL_USER CONTAINER=ALL;
-- Connect directly to the PDB as an Admin user
-- Requires Oracle 19c Update 10 or later

-- Create a local user in the PDB
CREATE USER SUPERMETAL_USER IDENTIFIED BY "strong-password";

-- Grant session and catalog permissions
GRANT CREATE SESSION TO SUPERMETAL_USER;
GRANT EXECUTE_CATALOG_ROLE TO SUPERMETAL_USER;

-- Grant LogMiner permissions
GRANT LOGMINING TO SUPERMETAL_USER;

-- Grant table access
GRANT SELECT ANY TABLE TO SUPERMETAL_USER;
GRANT SELECT ANY TRANSACTION TO SUPERMETAL_USER;

-- Grant access to LogMiner dictionary views
GRANT SELECT ON V_$DATABASE TO SUPERMETAL_USER;
GRANT SELECT ON V_$ARCHIVED_LOG TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOGMNR_CONTENTS TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOGMNR_LOGS TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOG TO SUPERMETAL_USER;
GRANT SELECT ON V_$LOGFILE TO SUPERMETAL_USER;
GRANT SELECT ON V_$TRANSACTION TO SUPERMETAL_USER;
GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO SUPERMETAL_USER;
-- Required when using redo logs dictionary strategy (Oracle 19cU10+)
GRANT SELECT ON DBA_LOGMNR_DICTIONARY_BUILDLOG TO SUPERMETAL_USER;

-- Grant access to system views for metadata
GRANT SELECT ON DBA_OBJECTS TO SUPERMETAL_USER;
GRANT SELECT ON DBA_EXTENTS TO SUPERMETAL_USER;

-- Grant execute permissions for LogMiner
GRANT EXECUTE ON DBMS_LOGMNR TO SUPERMETAL_USER;
GRANT EXECUTE ON DBMS_LOGMNR_D TO SUPERMETAL_USER;

-- If TDE is enabled, also grant:
-- GRANT SELECT ON DBA_TABLESPACES TO SUPERMETAL_USER;
-- GRANT SELECT ON DBA_ENCRYPTED_COLUMNS TO SUPERMETAL_USER;
-- Connect as the master user

-- Create a user for Supermetal
CREATE USER SUPERMETAL_USER IDENTIFIED BY "strong-password";
GRANT CONNECT TO SUPERMETAL_USER;
GRANT CREATE SESSION TO SUPERMETAL_USER;

-- Grant LogMiner and catalog permissions
GRANT LOGMINING TO SUPERMETAL_USER;
GRANT EXECUTE_CATALOG_ROLE TO SUPERMETAL_USER;

-- Grant table access
GRANT SELECT ANY TRANSACTION TO SUPERMETAL_USER;
GRANT SELECT ANY TABLE TO SUPERMETAL_USER;

-- Use RDS procedures to grant access to system objects
BEGIN
    -- Required when using redo logs dictionary strategy (Oracle 19cU10+)
    rdsadmin.rdsadmin_util.grant_sys_object('DBA_LOGMNR_DICTIONARY_BUILDLOG','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVE_DEST_STATUS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','SUPERMETAL_USER','EXECUTE');
    rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','SUPERMETAL_USER','EXECUTE');
    rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('DBA_EXTENTS','SUPERMETAL_USER','SELECT');
END;
/

-- If TDE is enabled, also grant:
-- BEGIN
--     rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','SUPERMETAL_USER','SELECT');
--     rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','SUPERMETAL_USER','SELECT');
-- END;
-- /
-- Connect to the PDB as the master user
-- Requires Oracle 19c Update 10 or later on RDS

-- Create a local user in the PDB
CREATE USER SUPERMETAL_USER IDENTIFIED BY "strong-password";
GRANT CONNECT TO SUPERMETAL_USER;
GRANT CREATE SESSION TO SUPERMETAL_USER;

-- Grant LogMiner and catalog permissions
GRANT LOGMINING TO SUPERMETAL_USER;
GRANT EXECUTE_CATALOG_ROLE TO SUPERMETAL_USER;

-- Grant table access
GRANT SELECT ANY TRANSACTION TO SUPERMETAL_USER;
GRANT SELECT ANY TABLE TO SUPERMETAL_USER;

-- Use RDS procedures to grant access to system objects
BEGIN
    rdsadmin.rdsadmin_util.grant_sys_object('DBA_LOGMNR_DICTIONARY_BUILDLOG','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$TRANSACTION','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVE_DEST_STATUS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','SUPERMETAL_USER','EXECUTE');
    rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR_D','SUPERMETAL_USER','EXECUTE');
    rdsadmin.rdsadmin_util.grant_sys_object('DBA_OBJECTS','SUPERMETAL_USER','SELECT');
    rdsadmin.rdsadmin_util.grant_sys_object('DBA_EXTENTS','SUPERMETAL_USER','SELECT');
END;
/

-- If TDE is enabled, also grant:
-- BEGIN
--     rdsadmin.rdsadmin_util.grant_sys_object('DBA_TABLESPACES','SUPERMETAL_USER','SELECT');
--     rdsadmin.rdsadmin_util.grant_sys_object('DBA_ENCRYPTED_COLUMNS','SUPERMETAL_USER','SELECT');
-- END;
-- /

Session Limits

Oracle's default profiles often have low session limits which may impact Supermetal's parallel processing capabilities when snapshotting your database.

For optimal performance, set your SESSIONS_PER_USER limit to the smaller of:

  • The number of Supermetal agent cores, or
  • The number of database cores (available from v$parameter.cpu_count)

At minimum, we recommend setting this value to at least 10 sessions:

-- Check current database CPU count
SELECT VALUE FROM v$parameter WHERE NAME = 'cpu_count';

-- Create profile with appropriate session limit
CREATE PROFILE SUPERMETAL_PROFILE LIMIT SESSIONS_PER_USER 10;

-- Apply profile to Supermetal user
ALTER USER SUPERMETAL_USER PROFILE SUPERMETAL_PROFILE;

For CDB environments, apply the profile to your common user instead:

ALTER USER C##SUPERMETAL_USER PROFILE SUPERMETAL_PROFILE;

Password Security

Replace 'strong-password' with a secure, unique password for the supermetal_user. Store this password securely, as you'll need it when configuring the source in Supermetal.

Setup LogMiner

Archive Log Mode

Oracle's LogMiner requires that your database is running in ARCHIVELOG mode. You can check and enable it as follows:

-- Check if database is in ARCHIVELOG mode
SELECT log_mode FROM v$database;

-- If not in ARCHIVELOG mode, enable it
SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

Restart

Changing log mode requires a restart of the oracle database.

Retention

Instruct Oracle RMAN to retain archive logs for at least 3 days.

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

Redo Log Size

For optimal LogMiner performance, ensure your redo logs are appropriately sized

-- Check current redo log configuration
SELECT group#, bytes/1024/1024 AS size_mb FROM v$log;

Each redo log file should be at least 500MB for production databases. If your logs are smaller, consider increasing their size by contacting your DBA

-- Check if database is in ARCHIVELOG mode
SELECT log_mode FROM v$database;

-- If not in ARCHIVELOG mode, enable it by turning on backups in AWS RDS console

RDS Archive Log Mode

AWS RDS Oracle instances are automatically configured with ARCHIVELOG mode enabled when backups are enabled.

Retention

Set archive log retention using the set_configuration procedure for at least 3 days:

BEGIN
    rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours', 72);
END;
/

Adjust this value based on your backup and recovery requirements.

Database Supplemental Logging

LogMiner requires supplemental logging to capture the necessary information for CDC:

  • Minimal: Lower redo log usage but requires table-level supplemental logging configuration for each table.
  • Full: Higher redo log usage but eliminates the need for table-level configuration.
-- Enable minimal supplemental logging at the database level
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

-- Then configure table-level supplemental logging for each table to be synced
-- Repeat for each table to be synced:
ALTER TABLE schema_name.table_name ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
-- Enable full supplemental logging at the database level
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

Force Logging

For more reliable CDC, consider enabling force logging at the database level:

ALTER DATABASE FORCE LOGGING;
-- Enable full supplemental logging using RDS procedures
BEGIN
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD',
        p_type   => 'ALL'
    );
END;
/

Force Logging

For more reliable CDC, enable force logging using the RDS specific procedure:

BEGIN
   rdsadmin.rdsadmin_util.force_logging(p_enable => true);
END;

This ensures all database operations are logged.


Data Types Mapping

Oracle Type(s)Apache Arrow DataTypeNotes
NUMBER(p, s) where p,s specifiedDecimal128(p, s)Constrained precision and scale.
NUMBER (identity column)Decimal128(38, 0)Primary keys
NUMBER (unconstrained)Utf8Unconstrained precision and scale
NUMBER(p, s) where s < 0Utf8Negative scale numbers
BINARY_FLOATFloat3232-bit IEEE 754 single precision
BINARY_DOUBLEFloat6464-bit IEEE 754 double precision
FLOAT(p) where p ≤ 20Float32Binary precision up to ~6 decimal digits
FLOAT(p) where 20 < p ≤ 49Float64Binary precision up to ~15 decimal digits
FLOAT(p) where p > 49Utf8High-precision floats preserved as strings
Oracle Type(s)Apache Arrow DataTypeNotes
BOOLEANUnsupported
Oracle Type(s)Apache Arrow DataTypeNotes
DATETimestamp(s)Oracle DATE includes both date and time components
TIMESTAMP(p)Timestamp(s/ms/μs)Precision based on p:
p=0: seconds
p=1-3: milliseconds
p=4-6: microseconds
TIMESTAMP(ns)Utf8
TIMESTAMP(p) WITH TIME ZONETimestamp(s/ms/μs, "UTC")Same precision levels as above, normalized to UTC
TIMESTAMP(p) WITH LOCAL TZTimestamp(s/ms/μs)Same precision levels as above, UTC timezone
INTERVAL YEAR(2) TO MONTHInterval(YearMonth)Stores duration as months (years×12 + months)
INTERVAL YEAR TO MONTHUtf8
INTERVAL DAY TO SECONDUtf8
Oracle Type(s)Apache Arrow DataTypeNotes
CHARUtf8Fixed-length character data
NCHARUtf8Fixed-length Unicode character data
VARCHAR2Utf8Variable-length character data. Supports extended string size (MAX_STRING_SIZE = EXTENDED).
NVARCHAR2Utf8Variable-length Unicode character data. Supports extended string size (MAX_STRING_SIZE = EXTENDED).
CLOBLargeUtf8Character Large Object for text > 2GB
NCLOBLargeUtf8National Character Large Object for Unicode > 2GB
LONGLargeUtf8Legacy long text type (deprecated in Oracle)
ROWIDUtf8Oracle's physical row address
Oracle Type(s)Apache Arrow DataTypeNotes
RAWBinaryFixed-length binary data. Supports extended size (MAX_STRING_SIZE = EXTENDED).
BLOBLargeBinaryBinary Large Object for binary data > 2GB
BFILELargeBinaryBinary file locator for external files
LONG RAWLargeBinaryLegacy long binary type (deprecated in Oracle)
Oracle Type(s)Apache Arrow DataTypeNotes
XMLTYPEUtf8Mapped to Utf8. A extension type for XML is defined, similar to JSON.
JSONUnsupported
Oracle Type(s)Apache Arrow DataTypeNotes
OBJECTUnsupportedObject types are not supported

Last updated on