Ogg-01184 Expected 4 Bytes But Got 0 Bytes In Trail
If the corrupt RBA is mid-transaction (TransInd = 2, 3, or 4), you cannot skip just one transaction without breaking referential integrity for that transaction’s group of operations.
Step 1: Manually locate the next valid record header after the corruption.
In logdump, after hitting EOF at 4820192, try to “bump” forward:
logdump> next
logdump> next
If the trail file is simply truncated, there is no next record.
Step 2: If the file is partially recoverable, use logdump to write a clean trail: ogg-01184 expected 4 bytes but got 0 bytes in trail
logdump> open /u01/gg/dirdat/rt000012
logdump> filter include rba < 4820192
logdump> write to /u01/gg/dirdat/rt_clean 0
Then rename rt_clean to rt000012 (back up original first).
Step 3: Alter Replicat to start at the last good RBA before corruption:
ggsci> ALTER REPLICAT rep01, EXTSEQNO 12, EXTRBA 4819000
ggsci> START REPLICAT rep01
Result: You lose all changes after RBA 4819000. Resync required for the missing window. If the corrupt RBA is mid-transaction (TransInd =
This is the most frequent cause. GoldenGate rolls over to new trail files based on size limits (e.g., MEGABYTES 500). Sometimes, due to I/O latency, network glitches (in heterogeneous environments), or improper shutdowns, a trail file is created in the file system with a size of 0 bytes.
When the Replicat tries to open this file, it expects a valid file header but receives nothing, triggering the error.
From the GoldenGate Command Interface (GGSCI):
GGSCI> SEND REPLICAT <rep_name> STATS
GGSCI> INFO REPLICAT <rep_name>, DETAIL
GGSCI> SEND REPLICAT <rep_name> GETPOS
For the trail file directly:
GGSCI> FILEVIEW /ggs/dirdat/mt000001
FILEVIEW shows the raw trail file content in hex and ASCII. If at a certain position you see 0000 0000 where a non-zero length is expected, the file is corrupted.
Create a daily logdump validator:
#!/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
