Status: Closed (View Workflow)
In LogMinerHelper.java:setRedoLogFilesForMining(), the online redo log files are preferred over archived redo log files. This could cause an issue if a redo log switch occurs to a file that a logminer session is currently processing.
The Oracle documentation on DBMS_LOGMNR at https://docs.oracle.com/database/121/ARPLS/d_logmnr.htm says:
If a log switch occurs while LogMiner is reading an online redo log file, the database will overwrite what LogMiner is attempting to read. The data that LogMiner returns if the file it is trying to read gets overwritten by the database is unpredictable.
Imagine if there are three redo log groups with one file each and
- redo1.log is CURRENT
- redo2.log is ACTIVE and not archived
- redo3.log is INACTIVE and archived as archived3.log
and the SCN range that shall be processed falls into redo3.log/archived3.log. Currently the LogMiner process is started for redo3.log. But redo3.log may become the CURRENT online redo log and be overwritten while LogMiner is working.
In this scenario it could be avoided by preferring to work on the archived redo logs if they are available. It would also generally reduce the chances of something similar happening.