注册
达梦数据库恢复之两种recover的区别
专栏/培训园地/ 文章详情 /

达梦数据库恢复之两种recover的区别

赫兰山 2025/09/02 65 0 0
摘要

关于数据库的备份与恢复,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归档的目录,让他尽可能的应用其中的归档,属于完全恢复,可以恢复到任意时间点

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服