In versions prior to Rdb 7.4.1.1, the Rdb documentation indicated that RMU LogMiner (RMU/Unload/After_Journal) and RMU AIJ backup can interact in a rare and unpleasant way. The result is the potential loss of multiple transactions to the LogMiner. This problem has been experienced by at least two JCC Customers.
This occurs when the LogMiner starts processing in backup AIJ files and then switches to the live files while backup is progressing. The result is that since the LogMiner is behind and part way through the journal, it is possible that the backup process can finish and erase the AIJ. The LogMiner finds empty space in the journal (the AIJ architecture allows for empty pages) and skips over space that once contained real data and potentially to the end of the journal.
All of this is done silently with no hint of an anomalous situation and so customers can lose transactions in the stream of data going from the database to the Loader target.
The situation is compounded by the fact that the Loader "remembers" where it is in the journal. This memory is contained in the checkpoint record for the Loader family session. Once the checkpoint is advanced, it is advanced. The only solution is to "rewind" the Loader session and force it to start at the beginning of a backed-up AIJ file set. (Recall that the earliest of these backed up AIJs must be at a quiet point boundary.)
Loader customers should be aware of this and they should be careful when restarting the Loader near the time when AIJ backups are running to ensure that the contents of the journal are not removed.
Starting with Rdb 7.4.1.1 (Bug 18601419), the LogMiner was modified to set its checkpoint lock in the first active AIJ sequence# in the database to block an AIJ backup. This new mode of operation works well to eliminate the problem described above, ensuring that data is not lost. The change is not without issues, as AIJ backups may be blocked longer than acceptable based on the amount of AIJ backup data and how long the JCC LogMiner Loader requires to replicate that data.
Both operational issues, pre-7.4.1.1 and post-7.4.1.1, can be addressed by using the tools provided in the JCC LogMiner Loader kit to determine whether the LogMiner is processing in the AIJ backup files and, if so, shutdown the Loader session prior to an AIJ backup and restarting it afterwards. The following DCL example demonstrates how to ensure safe AIJ backups:
$ jcc_clml_aij_backup_safe <source db> <loader name> <checkpoint target> <checkpoint type>
$ if (.not. jcclml$aij_backup_safe)
$ then
$ jcc_clml_shutdown <loader name>
$ jcc_lml_statistics <loader name> <refresh> <type> ! exits when Loader has shutdown
$ endif
$ !
$ ! Do AIJ backup here
$ !
$ if (.not. jcclml$aij_backup_safe) then $ submit <loader run procedure>
