How are ITL entries banked?

From: Martin Klier <Martin.Klier_at_klug-is.de>
Date: Fri, 8 Jan 2010 17:33:14 +0100
Message-ID: <OF4097CB1E.0F0A12A0-ONC12576A5.0059966C-C12576A5.005AEEDE_at_klug-is.de>


Dear listers,

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?

Two theories:
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ß

Martin Klier
Senior Oracle Database Administrator


Klug GmbH integrierte Systeme
Lindenweg 13, D-92552 Teunz
Tel.: +49 9671/9216-245
Fax.: +49 9671/9216-112
mailto: martin.klier_at_klug-is.de
www.klug-is.de


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

Original text of this message