I saw Paul's post today on his blog titled "
dbf records previous state of each row" which shows that a simple table with a set of simple update statements retains the previous values of data so that a history of the previous values of the data can be seen in the data file. Whilst this is interesting and may prove useful in some circumstances i would suspect like Gary Myers who commented that its unlikely to be universally useful due to to the fact that Paul's example is too simplistic is right. The way Oracle adds rows to a datablock is from the end of the block up, the row headers are increased downwards. If an update cannot fit in the origianl space its added in a new row in the block. This presumably also marks the row for reuse. I would guess as a table is filled and hence blocks filled then the space in the blocks will be re-used. This is logical otherwise an Oracle database would need to be sized to include all data ever added to it without reusing any space for records deleted or updated. That said I can see that recent values in some circumstances could be read but it is unlikely to be consistent. A real database does not have tables with single columns residing in empty blocks. I would like to see a more comprehensive and realistic example Paul.