As I understand, Oracle use Data buffer cache to store the data frm
data file in memory for efficient transaction. Consider a case, when a
row of a table is modified by a user,that means earlier row values are
in roll back segment,current changed value in data buffer cache and
info regarding this transaction in redo log buffer.Now suppose the
user has committed the transaction.So redo log buffer content gets
copied to redo log file.But as DBW writes to the data files at some
time interval(viz 3 sec) and commit itself doesnot invoke any
checkpoint so its clear that at this instance data files are not
updated.Now suppose the user issues Select query to see that
particular row fields ,now as par with data consistency Oracle will
show the comitted data.
Now my question comes into picture.Where from Oracle
show this updated data? Apparently it seems from Data Buffer cache.So
does this cache has information that explicitly says following info
a)this block is changed but not comitted
b)this block is changed and comitted but not written back
to data files
c)this block is changed and comitted and written back to
data files
Waiting for some positive response.
Thanks and Regards
somu
Have a look at Metalink note 40689 "ORA-01555 "Snapshot too old" - Detailed Explanation", url:
http://metalink.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=40689.1
There is a detailed description of how "commited" flag is propagated.
Regards
Michel Cadot
Michel
Thanks for your reponse.But unfortunately I cant open your link.I dont
have the required access to this metalink site.
Rgds
Somu