get data blocks to the original state when user issues a 'rollback' statement
give consistent data to a user hiding uncommitted changes made by other users/sessions
to undo uncommitted changes during database recovery. After applying all changes recorded in the redo logs Oracle uses rollback segments to undo uncommitted changes. Since rollback segments are stored in the database buffers they are automatically protected by the redo log.
Transaction rollback: Suppose if you are updating the data now you want to rollback so the old image will read from rollback segments. You are old image from rollback segment.
Transaction Recovery: Suppose you are updating the data now the instance failed so the uncommited data has to be rolled back so it will rollback from undo segments if the data is protected by redo logs.
Read consistency: Suppose you are updating the data so lock will held for that table now other users query means it has to old data before you commit so that data will read from rollback segements. It is nothing but read consistency