Imagine these circumstances:

1. I make an update to one row of a table, but do not commit - my change is written to rollback and redo log;
2. Some time passes, and my dirty buffer is written to the data file even though I did not commit;
3. Several log switches occur, and the logs are archived;
4. My instance crashes.

Now I have uncommitted data in my data file, and my online redo logs do not contain any information about this change. How does Oracle manage this?