RMAN原理(四)--UNDO表空间备份增强

Oracle 11g 新特性:UNDO表空间备份增强
        由于UNDO表空间在恢复时不可缺少,在进行备份时必须备份该表空间,但是一旦事务提交,修改被确认,则该事务的前镜像被标记为INACTIVE,其中的信息在恢复时也就不会被用到,如果在备份时能够跳过这些数据,则备份UNDO表空间的效率就可以大大提高。
在Oracle Database 11g中,Oracle引入了一个新的特性RMAN UNDO备份优化。在RMAN备份UNDO表空间时,提交事务的UNDO信息将不备份,这个特性随RMAN强制启用。 关于UNDO表空间备份片的压缩比例在我自己的测试环境可以达到100:1

--11g增强特性,undo不备份提交的事务
SQL>select file#,name,ceil(bytes/1024/1024) MB,status from v$datafile;   

        3 /oracle/oradata/CJ/undotbs01.dbf          3072 ONLINE 

RMAN> backup datafile 3 format '/oracle/rmanback/undotbs_%d_%T_%s_%p.bak'; 

======================================================================
UNDO 表空间故障处理后回滚段的一致性问题说明
        数据库在非clean shutdown的情况,需要进行instance recovery。这里会做2个操作:前滚(根据redo 推进数据),前滚完成以后,在根据回滚段中的数据,对未完成的事务进行回滚操作。
         当前滚操作完成后,数据库就可以open。 只要数据库能open,也就意味着所有的事务已经提交。当数据库open以后,smon 进程再对未提交的事务进行回滚。  
        在这个回滚的回滚的过程中,如果undo record number和redo record 记录的不一致,就可能会触发ora-600[4194] 或者 ora-600[4193]。4开头的多与undo有关
        那么我们重建undo 表空间后,就可以避免SMON 进程在回滚时触发ORA-600[4194]/[4193]。因为我们创建并使用新的undo 表空间,该表空间对应的undo segment number比我们当前的undo segment number 高。所以当事务对block 进行clean-out的时候,会参考不存在的undo segment,所以就不会报错,然后继续对block 进行clean-out操作,即 把一个块中的数据从 dirty 变为 clean,本质上是更改 block header 中的一个标志位。

你可能感兴趣的:(ORACLE,RMAN)