【DM版本】: dm8_20251208_x86_CentOS7_64 开发版
【操作系统】:centos7
【CPU】: intel
【问题描述】*:在做备份和恢复测试过程中发现没法执行多个差备的恢复,以下是过程:
备份过程:
backup database backupset '/dm/bak/db_backup_base';
insert into test values(1112);
commit;
backup database increment backupset '/dm/bak/db_backup_increment_01';
insert into test values(2222);
commit;
backup database increment backupset '/dm/bak/db_backup_increment_02';
insert into test values(333);
commit;
backup archive log all backupset '/dm/bak/arch_log_backup_20230213';
rman恢复过程, 在恢复第2个差异备份的时候就报错了,感觉很奇怪
RMAN> recover database '/dm/RESTORE ARCHIVE LOG FROM BACKUPSET '/dm/bak/arch_log_backup_20230213' TO archivedir '/dm/arch' OVERWRITE 1;
RESTORE ARCHIVE LOG FROM BACKUPSET '/dm/bak/arch_log_backup_20230213' TO archivedir '/dm/arch' OVERWRITE 1;
[Percent:0.00%][Speed:0.00M/s][Cost:00:00:00][Remaining:00:00:00]
restore successfully.
time used: 130.605(ms)
RMAN> restore database '/dm/data/DMTEST/dm.ini' from backupset '/dm/bak/db_backup_base';
restore database '/dm/data/DMTEST/dm.ini' from backupset '/dm/bak/db_backup_base';
file dm.key not found, use default license!
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:02][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.134
RMAN> restore database '/dm/data/DMTEST/dm.ini' from backupset '/dm/bak/db_backup_increment_01';
restore database '/dm/data/DMTEST/dm.ini' from backupset '/dm/bak/db_backup_increment_01';
[Percent:100.00%][Speed:0.00M/s][Cost:00:00:03][Remaining:00:00:00]
restore successfully.
time used: 00:00:03.221
RMAN> recover database '/dm/data/DMTEST/dm.ini' from backupset '/dm/bak/db_backup_increment_02';
recover database '/dm/data/DMTEST/dm.ini' from backupset '/dm/bak/db_backup_increment_02';
==============================Error Stack==============================
DM[-8262]:Recover backupset[DB_DMTEST_INCREMENT_20260312_130236_570500] with N_MAGIC=5ec79c25 and restore backupset with N_MAGIC=33b0071 are not identical
=======================================================================
增量备份也需要指定基备份的路径的
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/home/dm_bak' BACKUPSET '/home/dm_bak/db_increment_bak_02';
增量备份
CREATE TABLE T1(C1 INT);
INSERT INTO T1 VALUES(1);
Commit;
sql>backup database full backupset '/data/dmbak/full/DAMENG1';
INSERT INTO T1 VALUES(2);
INSERT INTO T1 VALUES(3);
Commit;
sql>backup database increment with backupdir '/data/dmbak/full/DAMENG2' BACKUPSET '/data/dmbak/incr/2023102702';
恢复
RMAN> restore database '/data/dmdata/DMDB/dm.ini' from backupset '/data/dmbak/incr/2023102702' with backupdir '/data/dmbak/full/DAMENG2';
RMAN> recover database '/data/dmdata/DMDB/dm.ini' from backupset '/data/dmbak/incr/2023102702';
RMAN> recover database '/data/dmdata/DMDB/dm.ini' update db_magic;
谢谢各位, 我再试试

restore和recover需要是同一个备份,recover是重做备份期间的日志。差异增量备份的恢复例如:
RMAN> RESTORE DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/add/add_bak' WITH BACKUPDIR '/all/all_bak'; RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' FROM BACKUPSET '/add/add_bak'; RMAN> RECOVER DATABASE '/opt/dmdbms/data/DAMENG/dm.ini' UPDATE DB_MAGIC;