Database buffers store the most recently used blocks of database data. It can also contain modified data that has not yet been permanently written to disk.
Database buffers: It stores the most recently executed blocks and apart from that it stores the rollback blocks which contains the previous record for those rows which have been updated.
Buffer also stores the dirty blocks means blocks which contains the new updated value which has been not yet committed by the user.
Buffer Cache Stores the most recently used blocks of data. It can also have modified data that has not permenently written to disk. When a row in a table is updated the foreground server processes reads the datafile information on the disk in to the buffer cache. Hence modifying the data block in server memory. Oracle writes the block from the buffer cache to the LRU(Least Recently Used) Mechanism.
Database buffers consists of the dirty blocks. When ever we are trying to update some table/etc. First it verifies whether the data exists in database buffer If not it fetches the information from data files to database buffer. So the modified values exists in db buffer until a check point occurrence. When the transaction is committed then the dirty blocks/modified blocks will be written on to the data files with the help of a db writer. If the transaction is not committed/rolled back then the data from the undo segment will be moved to data files.
What ever SQL statement that is executed it checks in db buffer before retrieving the data from data files.