我们上一讲讲到了RMAN能提供全库备份、表空间备份、数据文件备份、归档日志备份、控制文件及参数文件的备份。RMAN备份出来的文件称之为备份集,RMAN在备份的过程中,只备份已经使用过的数据块。RMAN将多个数据文件打包到一起,生成一个备份集。数据文件与备份集文件不再是一一对应的关系。关于备份集的概念,我们下一讲再详细介绍。本将我们说说RMAN的另一种备份方式--镜像copy。
镜像copy是单个数据文件、控制文件、归档日志的克隆。备份出来的备份文件与数据库文件一一对应。下图描述了备份集与镜像copy之间的区别
镜像copy可以使用RMAN的backup as copy命令生成,也可以使用操作系统命令生成。
使用backup as copy命令备份时,Oracle服务器会话验证数据文件中的数据块,并且会将此次备份操作记录到控制文件中。我们知道,如果使用操作系统命令进行热备,首先要在数据库中执行begin backup命令,执行该命令后,数据文件的头部将被冷冻,在备份期间,为了保证数据块的有效性,一旦数据块被修改,那么日志文件将记录下该数据块的原始镜像。如果使用RMAN的backup as copy命令进行备份,则无需执行begin backup。 因为rman在备份的过程中会检查数据块的一致性,直到数据块一致了,才将其copy到备份文件中。
镜像copy有如下特征:镜像copy只能写到磁盘上,当备份大文件时,将花费很长时间。但是数据还原的时间将大大减少。因为数据文件已经在磁盘上,无需从其他介质中还原数据文件。
镜像copy中包含数据文件中的所有的块,无论该块是否被使用。
执行镜像copy备份数据库RMAN> backup as copy database;
Starting backup at 2015/07/08 11:53:55
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=39 device type=DISK
channel ORA_DISK_1: starting datafile copy
input datafile file number=00001 name=/u01/app/oracle/oradata/devdb/system01.dbf
output file name=/u01/app/oracle/fast_recovery_area/DEVDB/datafile/o1_mf_system_bss7pnh2_.dbf tag=TAG20150708T115355 RECID=9 STAMP=884519670
channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:35
channel ORA_DISK_1: starting datafile copy
input datafile file number=00002 name=/u01/app/oracle/oradata/devdb/sysaux01.dbf
output file name=/u01/app/oracle/fast_recovery_area/DEVDB/datafile/o1_mf_sysaux_bss7qqqg_.dbf tag=TAG20150708T115355 RECID=10 STAMP=884519692