#!/bin/bash for trail in /u01/gg/dirdat/rt*; do echo "checking $trail" echo "open $trail" > /tmp/logdump_cmd echo "n" >> /tmp/logdump_cmd echo "q" >> /tmp/logdump_cmd /u01/gg/logdump < /tmp/logdump_cmd | grep -i "error\|corrupt\|unexpected" done Scenario: A large financial firm replicates a 10TB Oracle database. One night, a backup job fills the /goldengate filesystem to 100%. The Extract continues writing but fails to complete the last record in rt000241 .
logdump> next logdump> next If the trail file is simply truncated, there is no next record.
Find the transaction ID (XID) of the corrupt record. In logdump : ogg-01184 expected 4 bytes but got 0 bytes in trail
Alter Replicat to start at the last good RBA before corruption:
-- For Extract (writing trail) TRAILCHKSUMBLOCKCHECK YES TRAILCHKSUMCHECK YES -- For Replicat (reading trail) CHKPOINTCHKSYNC YES logdump> next logdump> next If the trail file
ADD EXTRACT ext01, TRANLOG, BEGIN SCN 123456789 Recreate Pump and Replicat, start fresh. Part 4: Preventing OGG-01184 Before It Happens The best fix is never encountering this error. Implement these hardened practices. 1. Enable Trail File Checksums Add this to both Extract and Replicat parameter files:
When this happens, your target database stops synchronizing. Data latency begins to grow. And if not handled correctly, you risk data divergence between source and target. Part 4: Preventing OGG-01184 Before It Happens The
cd $OGG_HOME ./logdump logdump> open /u01/gg/dirdat/rt000012 logdump> ghdr on logdump> detail on logdump> pos 4820192 logdump> n