Why do I see the following error:
F_JT044C: Warning: HVR encountered change to table 'mytable' in transaction id
0xXX but it did not see the corresponding 'begin transaction' record. This change
had SCN 0x001 and occurred after timestamp 2016-11-09 10:27:17. This transaction
may have been started before 2015-05-31 21:47:00, when hvrinit activated capture
for this database.
HVR capture has the concept of expiring transactions. This can happen for 2 reasons:
- The transaction is open for more than 3 hours and it has no changes to replicated tables inside, it will be silently expired
- If the transaction is open for more than 3 days it will be expired even it if it has replicated transactions inside. But in this case, a warning will be issued.
This "expiring of transaction" has been implemented to avoid capture going back too far after a restart (HVR's capture will go back to the oldest open transaction after a restart, which may cause high latency).
The most likely reason for the warning that you got is that we had a transaction that was expiring due to reason 1 and then a change to a replicated table came in. HVR had already expired the begin transaction record and will give a warning. But it will replicate the change nevertheless.
Note: The timeouts for 1 and 2 can be modified using environment variables. But I would recommend against that. I think the default values are fine.