Oracle Sources FAQ for Streamkap
This FAQ focuses on using Oracle Database as a source in Streamkap, including self-hosted setups and cloud variants (AWS RDS Oracle). Streamkap’s Oracle connector provides real-time CDC with managed features like automatic scaling, UI setup, and ETL transformations.What is an Oracle source in Streamkap?
What is an Oracle source in Streamkap?
What Oracle versions are supported as sources?
What Oracle versions are supported as sources?
- Oracle Database 11g+ for basic CDC; 12c+ for enhanced features like multitenant architecture and JSON support; 19c+ for latest optimizations and cloud compatibility.
- Compatible with Oracle Database 11.2+
- Oracle RAC (Real Application Clusters) supported
What Oracle deployments are supported?
What Oracle deployments are supported?
- Self-hosted (on-prem/VM)
- AWS RDS Oracle (Standard Edition, Enterprise Edition)
- Oracle Cloud Infrastructure (OCI)
- Oracle RAC (Real Application Clusters)
What are the key features of Oracle sources in Streamkap?
What are the key features of Oracle sources in Streamkap?
- CDC: LogMiner-based via redo logs; captures inserts/updates/deletes with SCN (System Change Number) tracking
- Snapshots: Ad-hoc/initial backfills using signal table methods; locking or non-locking modes
- Schema Evolution: Automatic handling of DDL changes when enabled; tracks table structure modifications
- Heartbeats: Enabled by default to prevent redo log buildup in low-traffic databases
- Data Types: Standard mappings (numerics, temporals, strings, LOBs, RAW as bytes/base64/hex, XML, JSON in 12c+)
- Ingestion Modes: Inserts (append) or upserts
- Security: SSL/TLS, Oracle wallet, IP allowlisting
- Monitoring: Latency, lag, redo log metrics, LogMiner session stats in-app
- Streamkap adds transaction metadata and ad-hoc snapshots with filters
How does CDC work for Oracle sources?
How does CDC work for Oracle sources?
- Supplemental logging must be enabled (database and table level)
- Archive log mode must be enabled
- LogMiner privileges required for the Streamkap user
What is supplemental logging and why does it matter?
What is supplemental logging and why does it matter?
- Database-level:
ADD SUPPLEMENTAL LOG DATA - Table-level:
ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS(recommended for complete change records)
- Without supplemental logging, redo logs may not contain complete before/after images
- Affects ability to capture deletes and updates with full column data
- Must be enabled before CDC starts capturing
How do snapshots work for Oracle sources?
How do snapshots work for Oracle sources?
- Trigger ad-hoc at source/table level
- Requires a signal table (
streamkap_signal) - Methods: Blocking (uses locks) or incremental (chunked by ROWID or primary key)
- Modes:
initial(default),always,initial_only,no_data,when_needed,configuration_based,custom
What are heartbeats and how do they work?
What are heartbeats and how do they work?
Configure source database heartbeats
What data types are supported?
What data types are supported?
- Basics: Numbers (NUMBER, INTEGER, FLOAT), strings (VARCHAR2, CHAR, NVARCHAR2, NCHAR, CLOB), dates/timestamps (DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE)
- Advanced: Binary (RAW, LONG RAW, BLOB as bytes/hex), XML (XMLTYPE), JSON (12c+, stored as VARCHAR2/CLOB)
- Custom: ROWID, UROWID, spatial types (SDO_GEOMETRY) with limitations
- Unsupported: BFILE (external file pointers), deprecated LONG types (use CLOB instead), nested tables, VARRAYs without flattening, Oracle object types without conversion
How to monitor redo logs for Oracle sources?
How to monitor redo logs for Oracle sources?
- Check archive log generation rate:
- Monitor LogMiner sessions:
- Check redo log retention and space:
- Retain archive logs for at least 3-5 days
- Alert on archive log destination disk space
- Monitor supplemental logging overhead
- Track LogMiner query performance
Can CDC capture database Views, Materialized Views, and other virtual objects?
Can CDC capture database Views, Materialized Views, and other virtual objects?
CDC captures changes by reading the database transaction log (binlog, WAL, oplog, redo log, etc.). Views are query-time computations over base tables—they don’t store data or generate transaction log entries. When you query a view, the database engine executes the underlying SELECT statement against the base tables. Since views don’t store data, they don’t generate transaction log entries.What cannot be captured:
- Views: Virtual tables with no physical storage or redo log entries
- Materialized Views (MVs): While they have physical storage, their refresh operations may not generate standard DML redo logs, or may generate bulk operations that are difficult to track incrementally. Solution: Capture the base tables that feed the materialized view, then recreate the MV logic downstream.
- Materialized View Logs: Internal structures for fast refresh; not user data
- Global Temporary Tables (GTT): Session or transaction-scoped, redo logging depends on ON COMMIT setting, generally excluded from CDC
- External Tables: Reference files outside the database, no redo logging
- Index-Organized Tables (IOT): Can be captured, but with special considerations for ROWID-based snapshots
- System Tables (DBA_*, ALL_*, USER_*, V$*): Metadata views, not user data
- CTEs (Common Table Expressions): Query-time constructs with no persistent storage
- Object Tables: Tables based on Oracle object types; require special handling
Configure CDC on the underlying base tables that power your views. The view logic can be recreated in your destination or transformation layer.Oracle-specific notes:
- Materialized Views: Depending on refresh method (COMPLETE, FAST, FORCE), may generate redo logs, but tracking incremental changes is problematic. Always capture the base tables instead.
- Materialized View with ON COMMIT refresh: Generates redo logs but as part of transaction commit; difficult to associate with source changes
- Partitioned Views: Capture each base table in the partition view union
- Index-Organized Tables: Can be captured, but ensure supplemental logging includes the primary key (which is the physical organization key)
If you have a view
V_CUSTOMER_ORDERS that joins tables CUSTOMERS and ORDERS, enable supplemental logging and CDC on the CUSTOMERS and ORDERS base tables, then recreate the join logic in your destination or transformation layer.If you have a materialized view MV_DAILY_SALES that aggregates from SALES table, capture the SALES table and perform the aggregation downstream.What are common limitations?
What are common limitations?
- Archive log mode must be enabled (not enabled by default in many deployments)
- Supplemental logging overhead on write performance
- LogMiner has performance impact on high-transaction databases
- Large transactions can cause memory pressure in LogMiner sessions
- Redo log space management critical for continuous CDC
- Schema changes may require connector restart to refresh table metadata
- Long-running transactions can delay change event visibility
- Oracle RAC requires all nodes to have archive logs accessible
How to handle deletes?
How to handle deletes?
What security features are available?
What security features are available?
Why does the Connector need CREATE TABLE privileges?
Why does the Connector need CREATE TABLE privileges?
LOG_MINING_TABLE. If the Connector fails, it can use the last recorded value from that table to recover.Do I need to resize my redo logs for a database with low data volume and traffic?
Do I need to resize my redo logs for a database with low data volume and traffic?
How do I find the Container and pluggable database names?
How do I find the Container and pluggable database names?
CDB column should show YES.Can I create an Oracle local user instead?
Can I create an Oracle local user instead?
V$ tables which are not available from within a PDB.How do I find the database endpoint and port? (AWS RDS)
How do I find the database endpoint and port? (AWS RDS)
- Sign into your AWS account
- Once signed in, navigate to the RDS dashboard by clicking on Services in the top left corner, Databases and then RDS or by typing RDS into the top left search box
- From the AWS RDS Dashboard, click on DB Instances or Databases in the left side menu
- Click on the DB identifier for the Oracle database you want Streamkap to use. The Database Details page should appear
- Under the Connectivity & security section you will find Endpoint & port
Does the AWS automated backups retention period need to be large enough to accommodate the archivelog retention hours?
Does the AWS automated backups retention period need to be large enough to accommodate the archivelog retention hours?
archivelog retention hoursdetermines how long the logs are retained locally in the database storage- AWS automated backups retention period determines how long the logs are retained by AWS outside of the database storage
archivelog retention hours, they are removed from the database storage and then retained by AWS - outside of the database storage - for the AWS automated backups retention period.The AWS automated backups are there so you can recover your database in the event of a disaster. The retention period doesn’t impact the Streamkap Connector, only the archivelog retention hours does.Troubleshooting common issues
Troubleshooting common issues
- CDC Not Working: Verify archive log mode enabled; check supplemental logging at database and table levels
- Redo Log Buildup: Enable heartbeats; monitor archive log destination space; adjust retention
- Missing Events: Ensure supplemental logging includes ALL COLUMNS; verify LogMiner privileges
- Performance Issues: Monitor LogMiner session resource usage; limit captured tables; tune redo log size
- Connection Failures: Check listener status, TNS configuration, firewall rules
- Schema Changes Not Reflected: Restart connector to refresh metadata after DDL operations
How can I optimize schema history for large databases?
How can I optimize schema history for large databases?
Best practices for Oracle sources
Best practices for Oracle sources
- Use dedicated CDC user with minimal required privileges (LogMiner, SELECT on tables)
- Enable supplemental logging with ALL COLUMNS for complete change records
- Ensure archive log mode is enabled and monitored
- Set appropriate archive log retention (3-5 days minimum)
- Limit capture to needed schemas/tables to reduce LogMiner overhead
- Monitor redo log generation rate and space
- Test schema evolution procedures in staging
- For cloud: Use provider monitoring; enable heartbeats for low traffic
- Document supplemental logging configuration for team reference
- Consider impact of supplemental logging on write-heavy workloads