Drivers

Oracle Driver Documentation

This documentation explains the Oracle driver implementation and how connection parameters map to UI fields in the Gigantic application.

Connection Parameters

UI FieldTechnical ImplementationDescriptionRequiredDefault Value
HostconnectString in oracledb configThe hostname or IP address of the Oracle serverYeslocalhost
PortPart of connectString in oracledb configThe port number Oracle server is listening onYes1521 (from driverPorts)
DatabasePart of connectString in oracledb configThe name of the database/PDB to connect toYesNone (must be specified)
Ownerowner in gigadb configThe schema owner to use for queries and metadata extractionNoCurrent user's schema
Containercontainer in gigadb configThe Pluggable Database (PDB) name when using Oracle MultitenantNoNone
Usernameuser in oracledb connection configDatabase user for authenticationYesNone (must be specified)
Passwordpassword in oracledb connection configPassword for the database userYesNone (must be specified)

Technical Details

The Oracle driver implementation uses the oracledb Node.js library with connection pooling capabilities.

Key technical aspects:

  • Connection pooling is used through the Pool class from oracledb
  • Owner and Container (PDB) concepts are specific to Oracle
  • The driver uses DBMS_METADATA package for DDL generation
  • Virtual column handling in the normalizeRecordOracle method
  • Multiple load modes supported: insert, update, merge

When SSH tunneling is enabled, connections are first established through the tunnel before connecting to the Oracle server.

Connection String Format

Oracle connections combine individual UI fields into a connection string. Two formats are supported:

  1. Easy Connect Syntax (default):
//host:port/database
  1. Direct Connect String:
user/password@//host:port/database

The application takes the individual fields from the UI (Host, Port, Database) and combines them into format #1 for the oracledb library.

Authentication Options

Oracle supports several authentication types:

Auth TypeUI MappingDescription
NoneNot applicable for OracleDisables authentication
PasswordUsername/Password fieldsStandard username/password authentication
Password ManagerVarious password manager fieldsFetches credentials from external password managers

SSH Tunnel Support

The Oracle driver supports SSH tunneling for secure access to databases behind firewalls or in private networks. For detailed information on configuring SSH tunnels, please refer to the SSH Tunnelling documentation.

API Endpoints Used

Oracle connections are primarily used in:

  • Tap creation (data source discovery)
  • Sink creation (data destination for anonymized data)
  • Pipeline execution (data extraction and loading)

Custom Params

The Oracle driver supports additional custom parameters that can be specified in YAML format to fine-tune connection behavior, pooling, SSL settings, and other advanced options.

Connection Attributes

# Connection Configuration
stmtCacheSize: 30
edition: "ORA$BASE"
events: false
externalAuth: false
privilege: "SYSDBA"  # or "SYSOPER", "SYSASM", "SYSBACKUP", "SYSDG", "SYSKM", "SYSRAC"

# Sharding Support
shardingKey: ["key1", "key2"]
superShardingKey: ["super_key1", "super_key2"]

# Session Tagging
tag: "production_app"

Pool Attributes

# Pool configuration
poolAlias: "mypool"
poolMin: 4
poolMax: 10
poolIncrement: 1
poolTimeout: 60
poolPingInterval: 60
poolMaxPerShard: 5

# Queue management
queueMax: 50
queueRequests: true
queueTimeout: 60000

# Pool statistics
enableStatistics: true

SSL/TLS Configuration

# SSL Configuration
sslServerCertDN: "CN=server.example.com,O=Example Corp,C=US"
sslServerDNMatch: true
sslAllowWeakDNMatch: false
useSNI: true

# Oracle Wallet
walletLocation: "/path/to/oracle/wallet"
walletPassword: "wallet_password"
walletContent: ${file:/path/to/wallet.zip}

Token-Based Authentication

# Token-based authentication
accessToken:
  token: "valid_access_token_string"
  privateKey: ${file:/path/to/private_key.pem}
  type: "OCI_TOKEN"  # or "OAUTH2_TOKEN"

Example Configurations

Basic Configuration

poolMin: 2
poolMax: 15
stmtCacheSize: 50

SSL Configuration with Wallet

walletLocation: ${file:/path/to/oracle_wallet}
walletPassword: wallet_pass
sslServerDNMatch: true
enableStatistics: true
poolTimeout: 30

Multitenant Configuration

owner: app_owner
poolMax: 20
queueTimeout: 30000

Token-Based Authentication

accessToken:
  token: ${env:OCI_ACCESS_TOKEN}
  type: "OCI_TOKEN"
stmtCacheSize: 100
events: true