使用增量备份更新数据库备份镜像
从文件系统迁移数据文件到ASM磁盘组时,可以使用RMAN对数据库进行热备份为镜像文件。如果数据量大,热备过程持续时间长,热备过程中事务比较繁忙,可以在热备结束后再做一次增量备份,来更新热备出来的镜像文件。
0级增量备份相当于一个完整备份,这个完整备份会包含所有已用得数据文件块。 RMAN> backup incremental level 0 database;
1级差异备份是默认的增量备份,这个备份只包含最近一次1级累积备份或差异备份以来被更改的数据块。 RMAN> backup incremental level 1 differential database;
1级累积增量备份则只包含最近一次0级备份以来被更改的数据块。 RMAN> backup incremental level 1 cumulative database; |
【实验环境】
操作系统:windows 11.2.0.1
数据库:Oracle 11.2.0.1
【实验过程】
run { sql 'alter system archive log current'; allocate channel dev1 type disk format 'D:\app\Administrator\oradata\bak01\datafile_%U.dbf'; allocate channel dev2 type disk format 'D:\app\Administrator\oradata\bak02\datafile_%U.dbf'; backup as copy incremental level 0 database TAG 'lxh_asm_migration'; sql 'alter system archive log current'; } 对应的日志如下: sql 语句: alter system archive log current
释放的通道: ORA_DISK_1 分配的通道: dev1 通道 dev1: SID=13 设备类型=DISK
分配的通道: dev2 通道 dev2: SID=135 设备类型=DISK
启动 backup 于 11-5月 -18 通道 dev1: 启动数据文件副本 输入数据文件: 文件号=00001 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF 通道 dev2: 启动数据文件副本 输入数据文件: 文件号=00002 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF 输出文件名=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSTEM_FNO-1_26T2KAB6.DBF 标记=LXH_ASM_MIGRATION RECID=36 STAMP=975841647 通道 dev1: 数据文件复制完毕, 经过时间: 00:00:15 通道 dev1: 启动数据文件副本 输入数据文件: 文件号=00005 名称=D:\123.DNF 输出文件名=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSAUX_FNO-2_27T2KAB6.DBF 标记=LXH_ASM_MIGRATION RECID=35 STAMP=975841647 通道 dev2: 数据文件复制完毕, 经过时间: 00:00:15 通道 dev2: 启动数据文件副本 输入数据文件: 文件号=00003 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF 输出文件名=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-T1_FNO-5_28T2KABL.DBF 标记=LXH_ASM_MIGRATION RECID=37 STAMP=975841654 通道 dev1: 数据文件复制完毕, 经过时间: 00:00:01 通道 dev1: 启动数据文件副本 复制当前控制文件 输出文件名=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-UNDOTBS1_FNO-3_29T2KABL.DBF 标记=LXH_ASM_MIGRATION RECID=38 STAMP=975841654 通道 dev2: 数据文件复制完毕, 经过时间: 00:00:02 通道 dev2: 启动数据文件副本 输入数据文件: 文件号=00004 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF 输出文件名=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_CF_D-ORCL_ID-1502372298_2AT2KABN.DBF 标记=LXH_ASM_MIGRATION RECID=39 STAMP=975841655 通道 dev1: 数据文件复制完毕, 经过时间: 00:00:00 通道 dev1: 正在启动增量级别 0 数据文件备份集 通道 dev1: 正在指定备份集内的数据文件 备份集内包括当前的 SPFILE 通道 dev1: 正在启动段 1 于 11-5月 -18 输出文件名=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-USERS_FNO-4_2BT2KABN.DBF 标记=LXH_ASM_MIGRATION RECID=40 STAMP=975841655 通道 dev2: 数据文件复制完毕, 经过时间: 00:00:00 通道 dev1: 已完成段 1 于 11-5月 -18 段句柄=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_2CT2KABN_1_1.DBF 标记=LXH_ASM_MIGRATION 注释=NONE 通道 dev1: 备份集已完成, 经过时间:00:00:01 完成 backup 于 11-5月 -18
sql 语句: alter system archive log current 释放的通道: dev1 释放的通道: dev2
|
run { sql 'alter system archive log current'; allocate channel dev1 type disk; backup incremental level 1 for recover of copy with tag 'lxh_asm_migration' database; sql 'alter system archive log current'; } sql 语句: alter system archive log current
分配的通道: dev1 通道 dev1: SID=13 设备类型=DISK 启动 backup 于 11-5月 -18 通道 dev1: 正在启动增量级别 1 数据文件备份集 通道 dev1: 正在指定备份集内的数据文件 输入数据文件: 文件号=00001 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSTEM01.DBF 输入数据文件: 文件号=00002 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\SYSAUX01.DBF 输入数据文件: 文件号=00005 名称=D:\123.DNF 输入数据文件: 文件号=00003 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS01.DBF 输入数据文件: 文件号=00004 名称=D:\APP\ADMINISTRATOR\ORADATA\ORCL\USERS01.DBF 通道 dev1: 正在启动段 1 于 11-5月 -18 通道 dev1: 已完成段 1 于 11-5月 -18 段句柄=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB2MTM5_.BKP 标记=LXH_ASM_MIGRATION 注释=NONE 通道 dev1: 备份集已完成, 经过时间:00:00:03 通道 dev1: 正在启动增量级别 1 数据文件备份集 通道 dev1: 正在指定备份集内的数据文件 备份集内包括当前控制文件 备份集内包括当前的 SPFILE 通道 dev1: 正在启动段 1 于 11-5月 -18 通道 dev1: 已完成段 1 于 11-5月 -18 段句柄=D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NCSN1_LXH_ASM_MIGRATION_FHB2MYT0_.BKP 标记=LXH_ASM_MIGRATION 注释=NONE 通道 dev1: 备份集已完成, 经过时间:00:00:01 完成 backup 于 11-5月 -18
sql 语句: alter system archive log current 释放的通道: dev1 |
RMAN> list copy of database;
查看copy文件中数据文件的SCN号,不一致。
RMAN> recover copy of database with tag 'lxh_asm_migration'; 启动 recover 于 11-5月 -18 分配的通道: ORA_DISK_1 通道 ORA_DISK_1: SID=13 设备类型=DISK 通道 ORA_DISK_1: 正在开始还原增量数据文件备份集 通道 ORA_DISK_1: 指定要恢复的数据文件副本 恢复数据文件副本: 文件号=00001 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSTEM_FNO-1_26T2KAB6.DBF 恢复数据文件副本: 文件号=00002 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSAUX_FNO-2_27T2KAB6.DBF 恢复数据文件副本: 文件号=00003 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-UNDOTBS1_FNO-3_29T2KABL.DBF 恢复数据文件副本: 文件号=00004 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-USERS_FNO-4_2BT2KABN.DBF 恢复数据文件副本: 文件号=00005 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-T1_FNO-5_28T2KABL.DBF 通道 ORA_DISK_1: 正在读取备份片段 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB2M5K4_.BKP 通道 ORA_DISK_1: 段句柄 = D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB2M5K4_.BKP 标记 = LXH_ASM_MIGRATION 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成, 用时: 00:00:02 通道 ORA_DISK_1: 正在开始还原增量数据文件备份集 通道 ORA_DISK_1: 指定要恢复的数据文件副本 恢复数据文件副本: 文件号=00001 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSTEM_FNO-1_26T2KAB6.DBF 恢复数据文件副本: 文件号=00002 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSAUX_FNO-2_27T2KAB6.DBF 恢复数据文件副本: 文件号=00003 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-UNDOTBS1_FNO-3_29T2KABL.DBF 恢复数据文件副本: 文件号=00004 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-USERS_FNO-4_2BT2KABN.DBF 恢复数据文件副本: 文件号=00005 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-T1_FNO-5_28T2KABL.DBF 通道 ORA_DISK_1: 正在读取备份片段 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB2MLP3_.BKP 通道 ORA_DISK_1: 段句柄 = D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB2MLP3_.BKP 标记 = LXH_ASM_MIGRATION 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 通道 ORA_DISK_1: 正在开始还原增量数据文件备份集 通道 ORA_DISK_1: 指定要恢复的数据文件副本 恢复数据文件副本: 文件号=00001 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSTEM_FNO-1_26T2KAB6.DBF 恢复数据文件副本: 文件号=00002 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSAUX_FNO-2_27T2KAB6.DBF 恢复数据文件副本: 文件号=00003 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-UNDOTBS1_FNO-3_29T2KABL.DBF 恢复数据文件副本: 文件号=00004 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-USERS_FNO-4_2BT2KABN.DBF 恢复数据文件副本: 文件号=00005 名称=D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-T1_FNO-5_28T2KABL.DBF 通道 ORA_DISK_1: 正在读取备份片段 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB2MTM5_.BKP 通道 ORA_DISK_1: 段句柄 = D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB2MTM5_.BKP 标记 = LXH_ASM_MIGRATION 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01 完成 recover 于 11-5月 -18 |
RMAN> list copy of database;
查看copy文件中数据文件的SCN号,一致。
这样在切换数据文件到ASM switch database to copy; 后,
查看数据文件头部SCN (v$datafile_header),就会发现SCN号一致,都是1194421
RMAN> shutdown immediate;
数据库已关闭 数据库已卸装 Oracle 实例已关闭 RMAN> startup mount;
已连接到目标数据库 (未启动) Oracle 实例已启动 数据库已装载
系统全局区域总计 1071333376 字节
Fixed Size 1375792 字节 Variable Size 603980240 字节 Database Buffers 461373440 字节 Redo Buffers 4603904 字节
RMAN> switch database to copy; RMAN> recover copy of database with tag 'lxh_asm_migration';(提前追)
数据文件 1 已切换成数据文件副本 "D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSTEM_FNO-1_2JT2KBIK.DBF" 数据文件 2 已切换成数据文件副本 "D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSAUX_FNO-2_2KT2KBIK.DBF" 数据文件 3 已切换成数据文件副本 "D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-UNDOTBS1_FNO-3_2MT2KBJ3.DBF" 数据文件 4 已切换成数据文件副本 "D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-USERS_FNO-4_2OT2KBJ5.DBF" 数据文件 5 已切换成数据文件副本 "D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-T1_FNO-5_2LT2KBJ3.DBF" RMAN> recover database;
启动 recover 于 11-5月 -18 使用通道 ORA_DISK_1 通道 ORA_DISK_1: 正在开始还原增量数据文件备份集 通道 ORA_DISK_1: 正在指定从备份集还原的数据文件 数据文件 00001 的还原目标: D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSTEM_FNO-1_2JT2KBIK.DBF 数据文件 00002 的还原目标: D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-SYSAUX_FNO-2_2KT2KBIK.DBF 数据文件 00003 的还原目标: D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-UNDOTBS1_FNO-3_2MT2KBJ3.DBF 数据文件 00004 的还原目标: D:\APP\ADMINISTRATOR\ORADATA\BAK02\DATAFILE_DATA_D-ORCL_I-1502372298_TS-USERS_FNO-4_2OT2KBJ5.DBF 数据文件 00005 的还原目标: D:\APP\ADMINISTRATOR\ORADATA\BAK01\DATAFILE_DATA_D-ORCL_I-1502372298_TS-T1_FNO-5_2LT2KBJ3.DBF 通道 ORA_DISK_1: 正在读取备份片段 D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB3HK07_.BKP 通道 ORA_DISK_1: 段句柄 = D:\APP\ADMINISTRATOR\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2018_05_11\O1_MF_NNND1_LXH_ASM_MIGRATION_FHB3HK07_.BKP 标记 = LXH_ASM_MIGRATION 通道 ORA_DISK_1: 已还原备份片段 1 通道 ORA_DISK_1: 还原完成, 用时: 00:00:01
正在开始介质的恢复 介质恢复完成, 用时: 00:00:00
完成 recover 于 11-5月 -18 RMAN> alter database open;
数据库已打开
RUN { RECOVER COPY OF DATABASE WITH TAG 'incr_update' UNTIL TIME 'SYSDATE - 7'; BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE;}
注:该代码块与上一个代码块基本相同,只是每次前滚数据文件副本时,应用的是7天前的增量备份集, 因此只有当代码块运行到第八天时,第一条语句才开始奏效。 The basic example can be extended to provide fast recoverability to a window greater than 24 hours. Alter the RECOVER COPY... WITH TAG to perform incomplete recovery of the datafile copies to the point in time in the past where you want your window of recoverability to begin. This example shows how to maintain a seven day window: RUN { RECOVER COPY OF DATABASE WITH TAG 'incr_update' UNTIL TIME 'SYSDATE - 7'; BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update' DATABASE; }
|
【相关资料】
1、Oracle10g官方文档中相关介绍
2、11g ocp 模拟题中相关题目
Oracle 11g 1Z0-053-79:
You executed the following command:
RMAN> RECOVER COPY OF DATAFILE '/u01/app/oracle/oradata/orcl/users01.dbf';
Which statement regarding the above command is correct?
A. The '/u01/app/oracle/oradata/orcl/users01.dbf' data file is recovered from the image copy.
B. The '/u01/app/oracle/oradata/orcl/users01.dbf' data file is recovered from the last incremental backup.
C. Image copies of the '/u01/app/oracle/oradata/orcl/users01.dbf' data file are updated with all changes up to incremental backup SCN.
D. Image copies of the '/u01/app/oracle/oradata/orcl/users01.dbf' data file are recovered using the above command if data file recovery fails.
Answer: C
单个数据文件实验
---测试
使用标记生成映像副本。 RMAN> backup as copy incremental level 0 datafile 12 tag db_whole_copy format 'F:\123.DNF';
随后,定期执行增量备份并将其应用与原始备份。语法如下: run { allocate channel d1 type disk; backup incremental level 1 for recover of copy with tag db_whole_copy datafile 12 tag db_copy_upd format 'F:\u01_%U.bak' ; recover copy of datafile 12 with tag db_whole_copy; delete noprompt backupset tag db_copy_upd;}
在users表空间上创建一张表 create table aa (a number) tablespace users; insert into aa values(10); commit;
在执行一次增量备份,合并刷新快照 ---提前刷新快照 run { allocate channel d1 type disk; backup incremental level 1 for recover of copy with tag db_whole_copy datafile 12 tag db_copy_upd format 'F:\u01_%U.bak' ; recover copy of datafile 12 with tag db_whole_copy; delete noprompt backupset tag db_copy_upd;}
删除数据文件12 alter system flush buffer_cache 清空buffer cache 查询select * from a 报错 使用RAMN通过快照恢复 rman target /
RMAN> alter database datafile 12 offline;
已处理语句
RMAN> switch datafile 12 to copy;
数据文件 12 已切换成数据文件副本 "F:\123.DNF"
RMAN> recover datafile 12;
从位于 28-12月-18 的 recover 开始 使用通道 ORA_DISK_1
正在开始介质的恢复 介质恢复完成, 用时: 00:00:00
在 28-12月-18 完成了 recover
RMAN> alter database datafile 12 online;
已处理语句
RMAN> desc aa;
RMAN-00571: =========================================================== RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS =============== RMAN-00571: =========================================================== RMAN-03002: 位于 12/28/2018 15:56:47 的 DESCRIBE 命令失败 ORA-04043: 对象 "AA" 不存在
RMAN>
|