使用rman backup命令创建备份系列之增量备份

来源:互联网 发布:剑三捏脸数据截图 编辑:程序博客网 时间:2024/06/06 03:59

使用rman backup命令创建备份系列之增量备份:、
之所以有增量备份有三个主要原因:
时间,空间和最终用户的影响。备份完成的时间对系统管理员来说非常重要。自动化的磁带库是非常昂贵的。除了备份Oracle数据库外还可用于备份系统。如果可以减少一个rman备份所需的时间,那么

将节省需要的磁带库资源。即使rman的默认操作时在增量备份时扫描整个数据文件来确定哪些块已经变更,也仍会节省时间,因为实际情况,瓶颈都在于对磁带的写操作,而不是文件的读取。通过启用
块变更跟踪,就不需要扫描整个数据文件,备份时间大大减少。增量备份的量远远小于完整备份的量。正如备份集总是小于源文件或映像副本,因为它们不包括从未写入或可压缩的空块。
但增量备份可能是完整备份的一小部分。这可以减少对磁带库的影响。
影响用户的主要是完整备份所需的过量的磁盘i/o。如果启用了块变更跟踪,增量备份可以直接访问变更的块。从而大大减少所需的磁盘I/o资源。
   可以使用服务器管理的备份执行增量备份,不能使用用户管理的备份执行这一操作。就操作系统而言,备份的粒度是数据文件:操作系统实用程序无法查看数据文件的内部,以增量方式提取已经更改

的块,增量备份必须作为备份集或压缩备份集。从逻辑上来说,无法执行映像副本增量备份,因为增量备份永远不可能等同于源文件,否则就谈不上是增量备份。
   增量备份依赖于包含所有块的起点,这称为增量级别0备份。然后,增量级别1备份将提取自上一个级别1备份以来更改的所有块,如果没有介于其间的级别1备份,则提取自上一个级别0备份以来更改

的所有块。累积备份将提取自上一个级别0备份以来更改的所有块,不考虑其间是否存在任何级别1备份。
执行级别0备份的rman命令如下:
RMAN> backup as backupset incremental level 0 database;
该命令依赖于已经配置的默认设置:启动通道,放在每个备份集的文件数量以及配置集的写入位置。备份集将包含所有使用过的块。
如下:执行级别1备份:
RMAN> backup as backupset incremental level 1 database;
如下:提取自上一个级别1备份以来更改的所有快,执行累积增量备份:
RMAN> backup as backupset incremental level 1 cumulative database;
(注:如果没有运行级别0备份,那么第一次级别1差异备份或累积备份将实际执行级别0备份)
当然,我们也可以运行级别大于1备份,不过,那是没有效果的。
   增量备份总是小于完整备份的,但是节省的时间并不如想象的那么多,这是因为增量备份的默认行为是扫描备份的整个数据文件来确定哪些块需要提取。这样做的优点:允许rman检查块的损坏。
但在很多情况下,我们都希望增量备份可以快些。这可以通过启用块变更跟踪来实现。
     块变更跟踪依赖于启动一个额外的后台进程。CTWR,该进程在名为“变更跟踪文件”中记录每个已更改的块的地址。
如果启用了块变更跟踪,RMAN将在执行增量备份时读取变更跟踪文件来确定哪些块需要备份。这比扫描整个数据文件要块的多。
    变更跟踪文件在DBA指定的位置创建,默认是db_create_file_dest目录。初始大小是10mb,并以10m的增量增长,除非数据库是万兆级的。否则100mb就足够了。变更跟踪文件时位图格式,
每位包含32个数据库块。启动块变更跟踪会有一个最低的性能开销。但是这不重要。要启用块变更跟踪并制定跟踪文件的名称和位置,可使用下列命令:
alter database enable block change tracking using file
'/u01/app/oracle/oradata/orcl/change_tracking.dbf';
监视块变更跟踪的有效性,可查询v$backup_datafile视图。该视图在每次将数据文件备份到备份集时进行填充。
如下:
SQL> select file#,datafile_blocks from v$backup_datafile
  2  where used_change_tracking='YES' and incremental_level>0;

 

原创粉丝点击