热备期间最大的特点就是产生了比平常更多的日志文件,为什么会这样?在恢复的时候有什么用呢?
热备期间日志文件记录的是修改的row所在的整个block的image,而不仅仅是修改的row的信息。
这样做的目的是为了尽量避免热备份的数据文件中因为包含SPLIT BLOCK ,而不能用于恢复的可能性。
为了理解这段话,还要提一下SPLIT BLOCK的概念.
我们都知道,oracle 的block 是由多个OS blocks组成。比如,某个Unix 文件系统使用 512bytes
的blocksize,而oracle 使用8k 的db_block_size. 当热备份数据文件的时候,我们使用文件
系统的命令工具copy 拷贝文件,并且使用文件系统的blocksize 读取数据文件。
假设这种情况:当我们拷贝数据文件的同时,数据库正好向数据文件写数据。这就使得拷贝的文件中
包含这样的database block,它的一部分OS block 来自于数据库向数据文件(这个db block)写操作之前,
另一部分来自于写操作之后。这个database block就是一个SPLIT BLOCK.
所以,通过在日志中记录整个变化的db block 的image,可以保证在恢复的过程中,任何在热备的数据文件中出现的
SPLIT BLOCK可以通过日志文件中的full image of the block 覆盖掉得以解决。以保证将来恢复的成功。
SPLIT BLOCK 的概念可以参考:
http://tahiti.oracle.com/ 中查找 fractured block