Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> RE: How do commits release row level locks?
Jonathan Lewis is probably the best person to answer this but here is my
simplified explanation. Oracle does track which rows are locked. It does
so in the interested transaction list, ITL, within the actual data blocks.
Upon commit if the block is still in the buffer pool I believe that Oracle
updates the block as necessary to clean up the ITL information then it
updates the transaction information in the RBS header (see v$transaction).
If the dirty block was flushed to disk prior to commit Oracle does not
retrieve the block back into memory but rather the delayed block cleanout
method is used to update the block information from the RBS information when
the block is re-retrieved.
Oracle does not duplicate the row lock information in memory, which is why you cannot see which rows are locked unless you actually attempt to retrieve them. This reduces lock related memory costs and allows Oracle to support an almost unlimited number of concurrent rows locked providing enough RBS area is provided.
HTH -- Mark D Powell --
-----Original Message-----
From: oracle-l-bounce_at_freelists.org
[mailto:oracle-l-bounce_at_freelists.org]On Behalf Of Ryan
Sent: Thursday, February 12, 2004 11:13 PM
To: oracle-l_at_freelists.org
Subject: How do commits release row level locks?
Now Oracle does not track which rows are locked. How processes know when a lock has been released? I can't find it in the docs. I'm assuming there is something similiar to an SCN written to the block header of each row. However, the SCN would not be sufficient, since it does not identify whether the transaction is complete.
FAQ is at http://www.freelists.org/help/fom-serve/cache/1.htmlput 'unsubscribe' in the subject line.
-----------------------------------------------------------------
----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to: oracle-l-request_at_freelists.org
![]() |
![]() |