How are ITL entries banked?
Date: Fri, 8 Jan 2010 17:33:14 +0100
I know only a bit, how the ITL in a block works.
One question arises now: How are ITL entries blanked out again? Are they blanked at all?
1.) A DML operation inserts its XID, UBA, SCN and the ROWID it works on, into my block's ITL. On commit, this entry is blanked out. BUT it means, that on commit, all involved blocks are subject to another touch, even a readback from disk is possible!
2.) A DML operation inserts its XID, UBA, SCN and the ROWID it works on, into my block's ITL. On commit, the XID is closed, and so the ITL of my block contains an old XID's entry. Thus there is no need to blank it out. BUT now, the next DML operation coming over the block, has to check each ITL entry sitting around, and ask the core system if the XID mentioned in the ITL entry is closed or not. Okay, the SCN will be older (lower) than the current DML in question, but this circumstance does not allow the conclusion that the operation causing the (old) entry is already closed.
I guess, there's a third way I wasn't able to see. Can you help me
understanding Oracle transactions a bit better?
Thanks a lot in advance!
Mit freundlichem Gruß
Senior Oracle Database Administrator
Klug GmbH integrierte Systeme
Lindenweg 13, D-92552 Teunz
Tel.: +49 9671/9216-245
Fax.: +49 9671/9216-112
Geschäftsführer: Johann Klug, Roman Sorgenfrei Sitz der Gesellschaft: Teunz, USt-ID-Nr. DE175481608, HRB Nr. 2037, Amtsgericht Amberg
http://www.freelists.org/webpage/oracle-l Received on Fri Jan 08 2010 - 10:33:14 CST