=======
Bottom line:
When datafile is in backup mode, only the first cahnge of the block cause the whole block to be archived. Any subsequent changes to this same block cause only change vectors to be written to the archlog, not the whole block again.


__________________

This is partially true.
As long as the block is in the SGA after the full image has been written into redo log, oracle writes only changed vector for that block.
Imagine the following situation.
Oracle has written full image of file 10 block 20 after tablespace was put into backup mode b/c of a change in the block.

A new server process reads many blocks from a data file and puts them in to buffer cache. During this process oracle removes the unwanted blocks to accomodate new blocks. DBWR writes this block into disk. So there is a possibility that file 10 block 20 could be removed from the buffer cache.

Now another process reads the file 10 block 20 for a DML operation b/c the block is not in buffer cache. And it reads from the disk and puts the file 10 block 20 into the buffer cache. It updates/inserts/deletes a row. In this situation, oracle again writes a FULL IMAGE of the block into redo log.

Why is oracle writing the full image of file 10 block 20 again?
I do not know the right answer.
My guess is:
1. May be the version number (due to vector change) gets duplicated once the block is removed from the buffer cache.
2. Oracle may think that the new change in the block 20 of file 10 was done by another instance, in case parallel server is running.
3. During the recovery process Oracle may find it easy to recover from the full image (of 2nd copy) of the block and applying vector change.
4. I may be missing something.

That is why hotbackup should be done when there is less DML operations going on in the database.

Tamil
Oct 20, 2004