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 Field | Technical Implementation | Description | Required | Default Value |
|---|---|---|---|---|
| Host | connectString in oracledb config | The hostname or IP address of the Oracle server | Yes | localhost |
| Port | Part of connectString in oracledb config | The port number Oracle server is listening on | Yes | 1521 (from driverPorts) |
| Database | Part of connectString in oracledb config | The name of the database/PDB to connect to | Yes | None (must be specified) |
| Owner | owner in gigadb config | The schema owner to use for queries and metadata extraction | No | Current user's schema |
| Container | container in gigadb config | The Pluggable Database (PDB) name when using Oracle Multitenant | No | None |
| Username | user in oracledb connection config | Database user for authentication | Yes | None (must be specified) |
| Password | password in oracledb connection config | Password for the database user | Yes | None (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:
- Easy Connect Syntax (default):
//host:port/database- Direct Connect String:
user/password@//host:port/databaseThe 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 Type | UI Mapping | Description |
|---|---|---|
| None | Not applicable for Oracle | Disables authentication |
| Password | Username/Password fields | Standard username/password authentication |
| Password Manager | Various password manager fields | Fetches 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: trueSSL/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: 50SSL Configuration with Wallet
walletLocation: ${file:/path/to/oracle_wallet}
walletPassword: wallet_pass
sslServerDNMatch: true
enableStatistics: true
poolTimeout: 30Multitenant Configuration
owner: app_owner
poolMax: 20
queueTimeout: 30000Token-Based Authentication
accessToken:
token: ${env:OCI_ACCESS_TOKEN}
type: "OCI_TOKEN"
stmtCacheSize: 100
events: true