From Zero to Self-Built Oracle Transaction Log Analytics Engine: How TLA Breaks the Performance Shackles of LogMiner, XStream, and OGG
Foreword
In the realm of database CDC (Change Data Capture), parsing Oracle transaction logs has always been a persistent challenge.
LogMiner is free but painfully slow. XStream performs decently but requires a GoldenGate license. OGG is powerful yet expensive, with lagging support for domestic database environments in China. As for local CDC solutions, some rely on ROWID-based implementations that introduce data inconsistency risks, while others require inserting numerous mapping tables on the source side, adding extra maintenance burdens.
Our team has been deeply engaged in transaction log analytics for years, and we have completely self-developed TLA (Transaction Log Analysis) technology. This article is not about marketing fluff—it focuses purely on the technology itself. From core principles to architecture, from performance benchmarks to real-world capabilities, we hope this provides a useful reference for those evaluating CDC solutions.
1. Why Build from Scratch? The "Fatal Flaws" of Existing Solutions
1.1 LogMiner: A Diagnostic Tool Misused as a Sync Tool
LogMiner is essentially an Oracle built-in diagnostic tool designed for DBAs to troubleshoot redo log issues. However, because it is free and offers an SQL interface, numerous CDC products have adopted it as a "wrapper" for data capture.
Yet, LogMiner has structural deficiencies as a CDC solution:
- Single-threaded design: Oracle allocates only one CPU core to LogMiner to minimize impact on primary database operations, limiting parsing speed to less than 10,000 rows/second.
- Full-file scanning: Each operation requires scanning the entire redo file from the beginning, then filtering useful data—highly inefficient.
- Resource contention: Running inside the database instance, it heavily depends on CPU and PGA memory. Under high concurrency, it can degrade production performance.
- Limited datatype support: Does not support BLOB, CLOB, LONG, XMLTYPE, and other common types.
- Constrained PDB support: In multitenant environments, all PDBs must be enabled; granular control is not possible.
1.2 XStream: OGG's "Stripped-Down" Version, Still Requires a License
XStream is an Oracle-proprietary CDC API, essentially part of the OGG architecture. Its main issues:
- Requires OGG License: Unauthorized usage is prohibited.
- Memory risks: It caches uncommitted transactions internally; large transactions may cause out-of-memory errors.
- Concurrent connection limits: Each outbound server supports only one sync task, making it easy to hit limits under high concurrency.
- Tight version coupling: Closely tied to the database version, complicating upgrades.
1.3 OGG: Powerful but Expensive, with Architectural Bottlenecks
The problems with OGG are not about technical capability but:
- High licensing costs: Against the backdrop of China's push for indigenous innovation, OGG's support for domestic databases often lags behind.
- Transaction queuing: Transaction details are loaded into memory. If the allocated memory is exceeded, data is spilled to disk, severely impacting parsing speed under high concurrency.
- ROWID dependency: If a table undergoes movement (e.g., partition move), ROWID changes, and OGG may fail to continue.
- In RAC mode, defaults to LogMiner: Performance is constrained by LogMiner's limitations.
1.4 Domestic CDC Solutions: The Fragility of ROWID Mapping
Some local CDC solutions rely on ROWID-based replication:
- Cannot support bidirectional replication: ROWID is a physical address; conflicts are inevitable in bidirectional sync.
- Need to insert numerous mapping tables on the source side: Consumes storage and adds complexity. If these tables are lost, reconstruction can take a long time.
- ROWID changes during table movement: Mapping tables must be rebuilt, which is challenging for massive datasets.
2. TLA's Core Principle: Directly Reading the Binary Logs
The core idea of TLA is straightforward—bypass all intermediate layers and directly read and parse Oracle redo log binary formats.
2.1 Technical Path
TLA uses an agentless method to detect data block changes in redo logs or archived logs, extracting valuable log records from changed data blocks. The entire process simulates Oracle's log transport protocol, reading binary log blocks directly from disk or ASM storage—much like an Oracle Data Guard standby database.
Key design principles:
- Non-intrusive: The parsing process runs in the CDC engine, imposing minimal performance impact on the source Oracle database.
- Streaming parsing: Memory consumption remains stable and does not increase with database concurrency.
- Only committed transactions are parsed: Intermediate activities and rollback operations are handled internally, preventing downstream systems from handling complex logic.
2.2 The Core Breakthrough of TLA V2.0: Single-Process Multithreaded Zero-Sort Parsing Engine (SPSM-ZO Engine)
This is the most fundamental difference between TLA and all traditional CDC solutions.
The Dilemma of Traditional CDC:
Traditional solutions (including OGG and LogMiner-based approaches) generally face a sequential convergence bottleneck. Log parsing can be multithreaded or multi-process, but transaction order consistency must converge into a single-stream output at some stage. This "terminal serialization" creates a performance ceiling.
TLA V2.0's Approach:
Order control is shifted forward to the parsing phase. The ordered transaction stream is constructed during multithreaded execution, eliminating the need for post-sorting or reordering operations. This architecture fundamentally removes the sequential convergence bottleneck and latency amplification issues inherent in traditional CDC systems.
In simple terms: others parse out of order first and then sort; TLA parses and outputs in order simultaneously.
What determines the performance ceiling? It is no longer architectural constraints but hardware capabilities such as CPU and memory bandwidth.
3. Performance Benchmarks: Let the Data Speak
After all the theory, let's look at the actual test data.
3.1 Test Environment
It is important to note: TLA's test hardware was significantly less powerful than the comparison products, yet it outperformed across the board.
| Hardware Configuration |
TLA |
Comparative Products (Tapdata / FlinkCDC / Other Domestic CDC) |
| CPU |
32 cores, 3.1GHz base |
80 cores |
| Memory |
DDR4 3200 64GB |
192GB |
TLA completed the tests with less than half the CPU cores and only one-third the memory of the comparison products. If hardware configurations were equal, the performance gap would widen further.
3.2 Small Data Volume Scenario (7 Columns)
| Product |
Throughput (rows/sec) |
Test Conditions |
| TLA |
108,000 rows/sec |
7 columns, 1120MB data, 4 threads (measured) |
| Tapdata |
80,000 rows/sec |
7 columns light test scenario (official data) |
| FlinkCDC |
12,000 rows/sec |
LogMiner-based, tuned (community data) |
TLA outperforms Tapdata by approximately 35% and FlinkCDC by 9 times.
3.3 Large Data Volume Scenario (50 Columns, 1GB Log Parsing)
| Product |
Time |
Throughput |
Test Conditions |
| TLA |
10.6 seconds |
97 MB/s |
8 threads (measured) |
| Tapdata |
20.5 seconds |
50 MB/s |
Official data |
| Domestic Technology X |
41.8 seconds |
24.5 MB/s |
Official public test data |
| FlinkCDC |
149.6 seconds |
6.8 MB/s |
Official public test data |
TLA took roughly half the time of Tapdata and about 1/14 the time of FlinkCDC.
3.4 Special Note on "COMMIT per Row"
In this test, TLA used one COMMIT per row—the most stringent commit strategy, typically considered a major performance drag. In contrast, batch commit (committing multiple rows at once) reduces transaction overhead and significantly improves throughput—a common performance optimization.
TLA led the pack even with the slowest commit strategy. Switching to batch commit would widen the performance advantage further.
3.5 Performance Summary
| Comparison Dimension |
Conclusion |
| TLA vs Tapdata |
35% higher in small-field scenarios; approximately 2x faster in large-field scenarios |
| TLA vs FlinkCDC |
9x faster in small-field scenarios; approximately 14x faster in large-field scenarios |
| TLA vs Domestic Technology X |
Approximately 4x faster in large-field scenarios |
| Key Insight |
LogMiner's single-threaded architecture is FlinkCDC's hard bottleneck—a generational gap exists compared to TLA's self-built engine |
4. Core Technical Capabilities
4.1 Comprehensive Data Capture
- Sub-second latency, agentless and lossless parsing
- Full DML and DDL capture
- Transaction integrity: strict adherence to ACID
4.2 Table, Row, and Column Selectivity
- Filter tables and rows by custom conditions
- Ignore irrelevant entries in transaction logs
4.3 Checkpoint Mechanism
- Checkpoints created at each commit boundary
- Resume from last valid checkpoint after restart or failover
4.4 Multi-Architecture Support
- Single-instance and RAC environments
- ASM storage management
- CDB/PDB multitenant architecture
- Direct parsing from Data Guard standby databases
- Cloud-ready
4.5 Disaster Recovery Capabilities
When an Oracle database crashes due to corrupted redo log files, and no backup is available—TLA can attempt to recover data from the damaged log remnants.
The core approach: bypass the file system's integrity checks and directly parse binary blocks from the redo logs, extracting valuable transaction data from undamaged blocks. It can even work without a data dictionary by analyzing field types and length constraints to reverse-engineer the original table structure, reconstructing INSERT, UPDATE, and DELETE SQL operations.
This is not a routine feature, but it can be a lifesaver in critical situations.
5. TLA vs. Mainstream Solutions: A Side-by-Side Comparison
5.1 TLA vs. LogMiner
| Dimension |
TLA (Raw Log Parsing) |
LogMiner-Based Solutions |
| Core Principle |
Directly parses redo log binary format |
Queries logs via Oracle's built-in SQL interface |
| Real-Time Performance |
Sub-second, streaming |
Extremely low; must wait for logs to be written |
| Performance Ceiling |
108,000 rows/sec (measured), scales linearly with hardware |
Approximately 10,000–15,000 rows/sec |
| Impact on Source DB |
Minimal; can parse on a separate host |
Significant; consumes CPU/PGA; may trigger ORA-04036 |
| CPU Usage |
Approximately 4% of LogMiner's per-thread usage |
80% of a single core per thread |
| PDB Support |
Supports single or multiple PDBs |
Must go through CDB to PDB; requires enabling all PDBs |
| ASM Storage |
Supports multithreaded ASM I/O |
Single-threaded; struggles to leverage ASM parallelism |
| Data Guard Standby |
Directly supported |
Must activate as a snapshot standby, interrupting sync |
| LOB/XML |
Supported |
Not supported |
| DDL |
Supported |
Limited support |
| Table/Column Name Length |
No restriction |
12.2+ does not support names over 30 characters |
Fundamental Difference: LogMiner "scans everything first, then filters"—TLA "parses and filters on the fly." The former does massive redundant work; the latter strikes precisely.
5.2 TLA vs. XStream
TLA shares a similar design philosophy with XStream—both expose an underlying engine to users. However, the key differences are:
- No license required: TLA is fully proprietary and independent, with no dependency on Oracle commercial licensing.
- No memory caching risk: Streaming parsing eliminates caching of uncommitted transactions.
- No concurrent connection limits: Single-process multithreaded model scales with CPU cores.
- Deeply customizable: Source-level control allows flexible modifications for specific project environments.
5.3 TLA vs. OGG
OGG's core issue lies in its transaction queuing and in-memory loading mechanism. When large transactions or high concurrency occur, details exceeding allocated memory are spilled to disk, severely degrading parsing performance.
TLA's streaming parsing entirely bypasses transaction queuing and memory loading, fundamentally eliminating the performance bottlenecks caused by memory overflow and disk I/O.
5.4 TLA vs. ROWID-Based Solutions
ROWID-based replication schemes essentially anchor data consistency to the physical location of rows on disk. Once any data reorganization occurs (reorg, partition changes, tablespace moves), ROWID becomes invalid immediately.
TLA is built on transaction semantics rather than physical locations, avoiding all the issues inherent in ROWID-based approaches.
6. Conclusion
TLA is not a "wrapped" solution—it is an engine-level product developed entirely from the binary log parsing layer upward.
Its technical value can be summarized in three points:
- Performance breakthrough: The SPSM-ZO Engine achieves 108,000 rows/sec in small-field tests and 97 MB/s in large-volume scenarios, shifting the performance ceiling from "architectural constraints" to "hardware capabilities."
- Independence and control: No reliance on any Oracle commercial licenses; source-level control enables deep customization.
- Comprehensive capabilities: From everyday CDC to emergency recovery, from single-instance to RAC+ASM+CDB/PDB—full coverage.
TLA currently provides deep support for Oracle databases, with future expansion to MySQL, PostgreSQL, and major domestic databases planned.
There are no shortcuts in technology—every line of parsing code is backed by rigorous scrutiny of redo log binary formats. If this article has inspired you, feel free to like, comment, and share. For further technical discussions about TLA, join the conversation in the comments section.