I think you can base your query on the ORA_ROWSCN pseudocolumn.
If two transactions T1 and T2 modified the same row R, one after another, and committed, a query on the ORA_ROWSCN of row R after the commit of T1 will return a value lower than the value returned after the commit of T2
For this use case, the table must be created with ROWDEPENDENCIES (cannot be changed after table creation)
With this feature, each row in the table has a system change number (SCN) that represents a time greater than or equal to the commit time of the last transaction that modified the row.
If you can recreate the table with ROWDEPENDENCIES
, then you would swap your latest_changed_date_from_last_run
for latest_ora_rowscn_from_last_run
and that should do the job.