Disk Blocks/pages, Consistent Reads, undo

From: markpapadakis <markpapadakis_at_gmail.com>
Date: Fri, 4 Jan 2008 01:55:25 -0800 (PST)
Message-ID: <6646154c-6de8-460e-a965-a30bbadbf581@x69g2000hsx.googlegroups.com>

Good day,

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?

Thank you,
Mark Papadakis Received on Fri Jan 04 2008 - 03:55:25 CST

Original text of this message