** I am sure this topic shall be interesting **

Guys, I have a thought running in me to understand the "Plumbing" circuit of a database transaction from the SGA to database level. Could someone comment on my understanding and questions. Kindly correct me if I am wrong:


1)When a user makes a transaction (UNCOMMITTED), say an UPDATE to a record - the original data gets inside the rollback segment. (Does it go through the SGA to the Rollback or directly into the Rollback Segment?)

2)Simeltaneously, the updated data gets inside the redo-log buffer (SGA) first. I believe the updated data also gets inside the database buffer (SGA)in parallel (Correct me if I am wrong).

3)Either at check point or at a COMMIT, the LGWR writes the UPDATED data from the redo-log buffer into the redo-log file. Also, during this, the DBWR writes the UPDATED data from the database buffer to the Database files. Besides, at this juncture, the Rollback segment gets cleared on COMMIT.

Is this understanding of mine correct?

----------------------------
----------------------------

I also was confused by another theory which differs slightly:

When an UPDATE happens, the updated record doesn't go to the database buffer but to the datafile directly with a marked as "For Update". The original record will still be there in the database besides this cloned record (with a flag as "For Update"). Upon commit, the original record is deleted and the UPDATED record's flag is reset to NORMAL indicating it as a normal permanent record.

Please folks, lets all discuss this to understand the operations. This is a pivotal concept in Oracle and I believe we must possess 100% clarity in the understanding.

Awaitng all of your interactions upon this.

Thanks in advance.



[Edited by dbafreak on 03-09-2002 at 01:00 AM]