Disk Blocks/pages, Consistent Reads, undo
Date: Fri, 4 Jan 2008 01:55:25 -0800 (PST)
Whenever a transaction reads a block, it compares its SCN with the transaction's SCN, and based on whether the block's SCN is > transaction's SCN it will replay undo data until the final data are consistent with the SCN of the said transaction.
However, if the above is true, and a transaction B wishes to update a row in a block, and that transaction B was initiated some time ago, while in the mean time other transactions have updated the block and committed those changes thus having set the block's SCN to be > transaction B's SCN, when transaction B reads the block, the data will be consistent with the time transaction B began.
So transaction B, having retrieved the block data being in the state they were the moment transaction B was initiated, will perhaps modify the rows directory, rows data, ITL and other segments/properties of the table and then commit that changes to the block, effectively undoing whatever was done by the transactions that began after transaction B which affected that block themselves ( because the block data transaction B touched based using consistent reads did not contain those changes ).
I am sure I am missing something here. Anyone who can help me understand that is wrong that assumptions?
Mark Papadakis Received on Fri Jan 04 2008 - 03:55:25 CST