when a row is under updation, the commited data is
stored in the rollback segment; how oracle comes to know that it should go to rollback segment. Where does oracle stores this info
Every segment has a header block which stores this information.
u mean to say every time oracle wants to access
the data it checks the segment header to confirm
which row in that segment is under updataion.
When a row is under updation the commited data is stored in the rollback segment .
well that is not true..
Before a transaction that modifies data is committed the old data is stored in the rollback segment.
For each rollback segment, Oracle maintains a transaction table--a list of all transactions that use the associated rollback segment and the rollback entries for each change performed by these transactions. Oracle uses the rollback entries in a rollback segment to perform a transaction rollback and to create read-consistent results for queries.
My reply to your question
a) how oracle comes to know that it should go to rollback segment
From the Interested Transaction List (ITL) and the System Change Number (SCN)
From the SCN It will know if it needs to recreate the blocks.
From the ITL in the RBS it will know if the block is commited or not.
b)Where does oracle stores this info.
I answered it wrongly the first time my answer should have read..
The changed block has an ITL (interested transaction list) in the block header which records information about the change i.e which rows have changed in the block together with a pointer to the RBS header (transaction table).
[Edited by hrishy on 07-25-2002 at 02:27 AM]
Click Here to Expand Forum to Full Width