使用增量备份更新数据库备份镜像----backup as copy强大

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/oradbm/article/details/85324322

使用增量备份更新数据库备份镜像

从文件系统迁移数据文件到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;

 

扫描二维码关注公众号,回复: 5145154 查看本文章

【实验环境】

操作系统:windows 11.2.0.1

数据库:Oracle 11.2.0.1

【实验过程】

  1. 0级增量热备:

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

 

 

  1. 1级增量热备:SCN不一致

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号,不一致。

  1. refresh copySCN一致

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

 

  1. 查看更新后的copy文件:SCN一致

RMAN> list copy of database;
查看copy文件中数据文件的SCN号,一致。
这样在切换数据文件到ASM switch database to copy; 后,
查看数据文件头部SCN v$datafile_header),就会发现SCN号一致,都是1194421

  1. 迁移指定

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;

}

 

 

【相关资料】

1Oracle10g官方文档中相关介绍

211g 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>

 

 

 

猜你喜欢

转载自blog.csdn.net/oradbm/article/details/85324322
今日推荐