关于数据库的备份与恢复,DCA和DCP似乎都考到了,但记得在DCA的恢复时,restore和recover都是从备份集做的,而DCP的讲义里,用到的recover with archivelog,其中有什么区别呢?用实验来验证一下
先做一个全备
backup database full to "DM_FULL" backupset 'DM_FULL';
备份后修改表数据
insert into dmtest.prod select 1,'123' from dual ;
commit;
然后rm 相关数据文件,制造数据库故障
校验数据文件,发生故障,开始恢复
sp_file_sys_check()
先试试从备份集recover
RMAN> check backupset '/dm8/data/DM01/bak/DM_FULL';
check backupset '/dm8/data/DM01/bak/DM_FULL';
RMAN> restore database '/dm8/data/DM01/dm.ini' from backupset '/dm8/data/DM01/bak/DM_FULL';
RMAN> recover database '/dm8/data/DM01/dm.ini' from backupset '/dm8/data/DM01/bak/DM_FULL';
RMAN> recover database '/dm8/data/DM01/dm.ini' update db_magic;
RMAN> exit
恢复后查询该表,会发现,表的数据是空的。
再从归档目录做一个recover
RMAN> check backupset '/dm8/data/DM01/bak/DB_FULL';
RMAN> repair archivelog database '/dm8/data/DM01/dm.ini';
RMAN> restore database '/dm8/data/DM01/dm.ini' from backupset '/dm8/data/DM01/bak/DB_FULL';
RMAN> recover database '/dm8/data/DM01/dm.ini' with archivedir '/dm8/data/arch';
RMAN> recover database '/dm8/data/DM01/dm.ini' update db_magic;
查询该表,发现插入的数据恢复出来了。
结论:
recover from backupset 是从备份集做不完全恢复,里面包含的归档也只有备份时的归档,之后产生的归档已经不在备份集中,当然无法被应用。
recover with archivelog 是告诉rman归档的目录,让他尽可能的应用其中的归档,属于完全恢复,可以恢复到任意时间点
文章
阅读量
获赞