Oracle is a multi user system and as such, multiple processes need to access the database at the same time to perform both reads and writes. Each one needs to get a consistent view of the data – one that does not change during a tranaction.
Oracle ensures that the data that a process gets is consistent as of the time that the statement began.
Even if another process modifies data that is being read while an earlier process is reading it, the earlier process will not see the change.
Before modification, data is written to the undo records and this log is kept until the modification is committed and all processes that might need that data have finished. This means that each process can have its own copy of the data that it is working with and will use this copy opposed to the data that is stored in the data files.
This can lead to multiple versions of the same data in the undo records.