I think you might want to consider the ROWID Pseudocolumn, depending on what is currently happening on the database.
ROWID shall be unique for the row unless you're doing specific operations to the table:
What can cause an Oracle ROWID to change?
- Export/import of the table
- ALTER TABLE XXXX MOVE
- ALTER TABLE XXXX SHRINK SPACE
- FLASHBACK TABLE XXXX
- Splitting a partition
- Updating a value so that it moves to a new partition
- Combining two partitions
- In case of IOT an update to the primary key would give you a different ROWID as well.
In case that none of those operations are taking place, you might to select the record with it's rowid, store it to your second database (or anywhere) and always check, if the record was already processed.
If you don't know what might be happening to the database, then creating new table with list of processed rows referenced by the primary key of the main table seems to be good idea.
Consider creating the second table as Index-organized table, as it will be growing, it might save you a lot of unnecessary row access by rowid.