对部分表压缩后,备份的时间明显增长。原来大概4小时左右,压缩部分表后,备份时间增长到需要8个多小时。开始怀疑是否有其他的一些维护作业影响了备份。做了备份期间的AWR报告,发现,备份期间,SERVER非常空闲,除了明显的RMAN I/O外,没有其他明显的占用资源的作业。因此排除了这一种可能。
压缩后DB的大小减少了35%,DB更小了,RMAN的I/O应该更少才对,为什么备份时间反而更长了?
通过搜索发现,原来是默认情况下,RMAN备份时会对数据块除了进行常规的校验和验证之外,还检查块内的逻辑损坏。在备份时指定 _no_check_logical = yes,备份时间减少了2个多小时。
但是,没有压缩之前,默认RMAN备份时也是会做logical check。因此,合理的解释应该是,对压缩的表进行logical check需要比对非压缩表进行logical check需要更多的时间(资源)。