Sources

Oracle

Check which Oracle releases SQL Flow supports and choose between the DirectLog and LogMiner capture modes.

SQL Flow captures changes from Oracle in two capture modes: DirectLog, which reads redo and archived log files through a log broker on the database host, and LogMiner, which mines the same redo through Oracle's DBMS_LOGMNR package over an ordinary database connection.

Supported versions

SQL Flow is tested on these Oracle releases:

Oracle releaseVersion tested
Oracle Database 12c Release 212.2
Oracle Database 19c19.3
Oracle Database 21c21.3
Oracle AI Database 26ai23.26

Other releases, including later release updates of these versions, are expected to work but aren't part of SQL Flow's testing. If you run an untested release, validate a pipeline in a test environment before you rely on it in production.

Both multitenant (CDB with PDBs) and non-CDB databases are supported. For a PDB, the connection form asks for two services:

FieldWhat to enterWhat uses it
Service name (PDB)The service of the PDB that holds the source tables, for example ORCLPDB1Table discovery, the initial load, and row and LOB reads
Root service for captureThe CDB root service, for example ORCLCDBLog mining and redo discovery, which Oracle only allows from CDB$ROOT

Root service for capture is under Advanced capture settings in the connection form. Leave it empty for a non-CDB database; the source test refuses a PDB source without it. It uses the same login, password and encryption settings as the PDB connection, so the capture user must be a common user (for example C##SQLFLOW). Advanced capture settings also holds Agent memory limit (bytes): leave it blank to let the agent detect its available memory, or enter a lower limit for this source.

Connection encryption

Every Oracle connection has an Encryption setting:

SettingWhat the agent does
Require (default)Connects to the listener's TLS (TCPS) port, validates the server certificate's chain against the agent host's trust store, and checks that its DN matches Server certificate DN, which the form requires.
PreferConnects over TLS, validated the same way, when Server certificate DN is set. With no TLS setting at all, it connects over plain, unencrypted TCP.

Wallet path on agent is optional: a wallet supplies a client certificate, not the server's identity, so a wallet without a Server certificate DN is refused. Wallet files must exist on the agent host and be readable by the agent's service account.

Capture modes

ModeWhat it readsWhere it runs
DirectLog (default)Online redo and archived log filesA log broker on the Oracle host serves the files to the agent
LogMinerV$LOGMNR_CONTENTS from a DBMS_LOGMNR sessionInside the database, over the agent's ordinary connection

Choosing a capture mode

  1. Are the redo logs and archived logs on a filesystem the database host can expose? The log broker can't read Oracle ASM storage (+DATA/...).
  2. Can you install a log broker on the Oracle host?
  3. Does the database run more than one redo thread (Oracle RAC)?
    • Yes: use LogMiner. DirectLog reads exactly one enabled redo thread.
  4. Are any of the tables in a TDE-encrypted tablespace, or do they have encrypted columns or encrypted SecureFile LOBs?
    • Yes: use LogMiner. DirectLog can't decrypt redo and refuses those tables.
    • No: use DirectLog. It has the lowest lag and keeps the mining work off the database.
DirectLogLogMiner
Typical lagMilliseconds, from the online redo logSeconds
Work on the database serverFile reads by the broker, plus catalog queriesMining sessions inside the database
Installs on the database hostLog brokerNothing
ASM storageNot supportedSupported
RAC (more than one redo thread)RefusedSupported
Supplemental loggingDatabase minimal logging plus (ALL) COLUMNS on every tableDatabase minimal logging
Key privilegesCatalog views in the root and the PDB, FLASHBACK on tablesLOGMINING, dictionary access, FLASHBACK on tables
Database character setAL32UTF8, UTF8, US7ASCII and four single-byte sets; see RequirementsAny
Native BOOLEAN, JSON, VECTOR columnsSupportedRefused
Extended-width VARCHAR2, NVARCHAR2, RAW columns (MAX_STRING_SIZE=EXTENDED)Not testedRefused
LONG, LONG RAW columnsSupported, except an update that re-chains the rowSupported
BFILE, REF, nested-table, ANYDATA, ANYTYPE, ANYDATASET and URI-type columnsRefusedRefused

Encrypted data

KindDirectLogLogMiner
TDE tablespace or column encryptionRefused by name before the initial load, because DirectLog has no decryption step.Supported while the database's TDE keystore is open. With the keystore closed, capture stops by name.
Encrypted SecureFile LOBsRefused by name before the initial load.Supported; the database decrypts them.
ConnectionsTLS with the certificate chain validated and the DN matched, under Encryption at Require (default). See Connection encryption.The same as DirectLog

See Encrypted data support for every engine.

See also

If this was useful,
our newsletter will be too.

Get monthly insights on data engineering, AI, and building critical infrastructure - direct from the Spectral Core team and CEO Damir Bulic.