目录
迁移方案4-2:可更新增量映像副本(IUIC)的本机使用案例—(最适合fs-asm迁移,也可以实现跨主机迁移)-最适合本机大数据量损坏后,以最快速度恢复数据库,比rman还原更快)
一、什么是可更新增量映像副本(IUIC)-RMAN增量备份的特性之一
1、IUIC的概念
全称:IncrementallyUpdateable Image Copies(可更新增量映像副本,IUIC)策略。
备份关键的数据库时,Oracle 推荐采用Incrementally Updateable Image Copies(可更新增量映像副本,IUIC)策略(或称为合并增量备份,更容易有理解)
2、IUIC的策略
不过许多Oracle DBA没有听说过这个策略。
在时间窗口紧迫的条件下进行数据库备份以及恢复时,该策略尤其有用。
3、IUIC的功能
该策略依赖于对数据库中所有数据文件进行一次INCREMENTAL LEVEL 0映像副本(一次, 只需一次! ),映像副本存储在数据库的FRA内,此后,每天只需要进行一次INCREMENTAL LEVEL 1(即差异)备份,以保留数据库的变化经历。
4、IUIC策略的优点
该策略的优点是,如果在每晚备份周期之内数据文件的内容不会发生巨大变化,则创建INCREMENTAL LEVEL 1备份集的时间会大幅缩短。
同时,当前述BCT策略执行后,为每个数据文件创建差异备份的时间会大幅缩短。
且IUIC是文件拷贝的方式,非rman备份方式,直接将dbf数据文件进行copy为映像副本,在目标库应用时(无需还原操作),可以快速完成。
所以,在文档《迁移方案6—Linux-Linux-不完全恢复-快速复制数据库(switch database to copy)》https://www.topunix.com/post-9849.html,文档中,使用复制数据库技术方式是最快速的方式。IUIC方式就是使用这种方式进行数据库的迁移。
二、原理图
先前的命令将会分三个阶段创建备份:
1、使用这些命令的首次备份将会创建0级备份(假设还没有0级增量备份存在时)。注意在备份期间将会出现一些错误, 错误以“数据文件没有副本可恢复”开头。这是假
设的,因为此时尚无1级增量备份存在。
2、再次运行上述命令时,将会创建一个1级增量备份,除此以外将不会有其他备份产生。当然,仍然会出现第(1)步出现的错误。
3、在第(3)步及随后的备份的迭代步骤中,先前的1级增量备份将会应用到0级备份中。结果是0级备份将会按照已应用的1级增量备份的结果更新。将产生新的1级增量备份。
这意味着在执行恢复/还原操作时仅需要0级备份和1个1级增量备份(以及必需的归档重做日志)就可以实现。这种方式显著地减少了还原数据库所需的时间。
注意使用标记标识这些备份。需要明确的是在recover和backup命令中使用相同名称的标记。
三、IUIC备份策略实现脚本
run{
recover
copy of database
with tag 'img_cpy_upd';
backup
incremental level 1
for recover of copy with tag 'img_cpy_upd'
database
plus archivelog;
}
1、第一天进行脚本执行
(1)脚本内容
##### # Results from 1st run: # - Incremental Level 0 image copies of datafiles 1 - 5 now exist #because even though a Level 1 incremental backup was requested, #no Level 0 incremental backup has yet been created with the tag #of img_ _cPY_ _upd. #####
run{ ############################################################## # RMAN Script: IncrementallyUpdatedImageCopyBackups. rev # # Creates a daily image copy of all datafiles and Level 1 incremental backups # for use by the daily image copies. Note that the PLUS ARCHIVELOG command # will handle archival of any archived redo logs. # ################################################################### # Roll forward any available changes to image copy files from the previous # set of incremental Level 1 backups recover copy of database with tag 'img_cpy_upd'; # Create incremental level 1 backup of all datafiles in the database for # roll- forward application against image copies backup incremental level 1 for recover of copy with tag 'img_cpy_upd' database plus archivelog; }
(2)脚本解释
因为不存在指定备份标记(imng_cpy_upd)的INCREMENTAL LEVEL 0映像副本和INCREMENTAL LEVEL 1备份,所以RMAN只好对每个数据文件创建一个INCREMENTAL LEVEL 0映像副本。
同时不存在任何脚本,所以没有任何可恢复的数据。
2、第二天进行相同脚本执行
(1)脚本内容
### # Results from 2nd run: #Incremental Level 0 image copies of datafiles 1 - 5 now exist #hit since no Incremental Level 1 image copy backups yet exist #with a tag of img_ CPY_ upd, none will be applied to the existing #Level 0 backups. #- Incremental Level 1 backups of datafiles 1 - 5 will be taken #because Incremental Level 0 backups (their eventual "parents") now exist. # - Datafile 6 is a new datafile, SO RMAN will create an Incremental Level 0 backup for it.
run{
# RMAN Script: IncrementallyUpdatedImageCopyBackups. rcv # # Creates a daily image copy of all datafiles and Level 1 incremental backups # for use by the daily image copies. Note that the PLUS ARCHIVELOG command # will handle archival of any archived redo logs. # ############################################################# # Roll forward any available changes to image copy files from the previous # set of incremental Level 1 backups
recover
copy of database
with tag 'img_cpy_upd';
#Create incremental level 1 backup of all datafiles in the database for
# roll-forward application against image copies
backup
incremental level 1
for recover of copy with tag 'img_cpy_upd'
database
plus archivelog;
}
(2)脚本解释
第二天,在这个周期中再次运行相同的脚本,但这次RMAN创建了一个新的INCREMENTAL LEVEL 1备份集,它包含了从创建INCREMENTAL LEVEL 0映像副本以来的所有变更的数据块,
3、第三天进行脚本执行
(1)脚本内容
##### # Results from 3rd run: # - The previous night's Incremental Level 1 backups for datafiles 1 - 5 #will now be applied to their Incremental Level 0 image copy "parents." #一Incremental Level 1 backups of datafiles 1 - 6 will be taken. # - The Incremental Level 0 image copy backup of datafile 6 will not yet # be updated from Incremental Level 1 backups until the next run. #####
run{ #####....#### # RMAN Script: IncrementallyUpdatedImageCopyBackups .rcv #Creates a daily image copy of all datafiles and Level 1 incremental backups # for use by the daily image copies. Note that the PLUS ARCHIVELOG command # will handle archival of any archived redo logs. # ############################ # Roll forward any available changes to image copy files from the previous # set of incremental Level 1 backups recover copy of database with tag 'img_cpy_upd'; # Create incremental level 1 backup of all datafiles in the database for # roll-forward application against image copies backup incremental level 1 for recover of copy with tag 'img_cpy_upd' database plus archivelog; }
(2)脚本解释
最后,在这个周期中的第三天(和后续的日子中),RMAN开始执行IUIC策略,用最老的INCREMENTAL LEVEL 1备份集将每一个数据文件的映像副本向前恢复一天。
四、案例操作
1、在没有备份的情况下执行此脚本3次
run{ recover copy of database with tag 'img_cpy_upd'; backup incremental level 1 for recover of copy with tag 'img_cpy_upd' database plus archivelog; }
2、还原恢复
(1)删除原数据库数据文件
[oracle@qdmes219:/oracle/app/oracle/oradata/mesorcl]$rm -rf *.dbf
(2)启动数据库到mount
shutdown abort; startup mount;
(3)注册新数据文件位置(控制文件已经记录了映像副本的位置,无需重新注册)
/oracle/archivelog/MESORCL/datafile/
(4)更换数据库副本
RMAN> switch database to copy;
(5)恢复数据库
RMAN> recover database;
(6)打开数据库
RMAN> alter database open;