Exadata and undo/redo and read consistency
Dears,
I would like to understand how exadata handles undo and read consistency. Let me explain what I have already understood in the context of a classical database and what I want to understand in the context of an exadata machine.
In a classical database when a user issues a select, Oracle will look after the user desired data in the buffer cache and, if not found, get it from the disk, put it in the buffer cache and feeds back the end user with this requested data. That’s fine.
If the end user modifies the selected data, Oracle will write a redo vector in which there are undo and redo information and put that redo vector into the redo log buffer. And then, at appropriate moments, LGWR and DBWR will write their corresponding information into the online redo log files and datafiles respectively.
In the case of a select that needs to see consistent data, Oracle will use information in the undo rollback segments to re-construct a consistent image of the data at it was at the beginning of the select. That’s also fine.
Now, in the context of exadata, suppose that I have issued a select which has been serviced by an exadata smart scan and by a predicate offloading. We all know that, for this smart scan to be possible, the select should by pass the buffer cache (of the database server) and will send me the data via a direct path read. That’s again fine.
Suppose that I will modify this selected data:
1) Where that modified data will be temporary stored? Is there a buffer cache in the storage tier where this modified data are put?
2) When I commit those modifications, will the DBWR (when it will wake up) puts the modified data into the exadata cells disks taking the modified data blocks from the storage buffer cache?
I have a couple of other questions related to read consistency and how redo are put in the redo logfile in an exadata machine; but for the moment I will wait first to clear the above points
Thanks in advance
Mohamed Houri
www.hourim.wordpress.com