Re: How are ITL entries banked?

From: vit\.spinka <vit.spinka_at_vitspinka.cz>
Date: Fri, 8 Jan 2010 18:01:15 +0100
Message-Id: <KVXTY3$15D88D7A345564A4A43575007887E221_at_webmail2.forpsi.com>



Hi Martin, the acutal algortihm is in fact a bit complicated; if I simplify it, then the ITL is blanked by the DML session only if the block is still in the cache. This is the "fast commit" cleanout. If it's already on the disk, than it's blanked by any other session that reads it from the disk next time. The session checks the undo if the referenced XID is till active; if not, the commit SCN of that XID is used to blank the ITL. If the XID is no longer in undo, we can safely assume the transaction already commited and blank the ITL as well (using lowest SCN of any active transaction). This is the "delayed block cleanout". Note that blanking the ITL also involves setting the commit SCN of that particular row, so we can properly answer any read-consistent queries. Further details are described at http://www.jlcomp.demon.co.uk/cleanout.html . Vit Spinka
--
http://www.freelists.org/webpage/oracle-l
Received on Fri Jan 08 2010 - 11:01:15 CST

Original text of this message