、
-----正文-----

本章介绍DM8数据库在多次故障后,如果没有最新的备份,如何使用以前的备份文件以不同的归档恢复数据库到最新状态。
环境说明
操作系统:CentOS7
数据库版本:DM8
相关关键字:达梦数据库、归档日志、备份还原
一、背景
事件流程如下:
创建一个数据库D1;
操作数据库并执行数据库备份B1;
继续操作数据库的过程中数据库故障,此时生成的归档为A1;
利用备份B1和归档A1将数据库D1恢复到目标库D2,此时数据库D2为D1故障前的状态;
启动数据库D2,操作数据库过程中数据库第二次故障,此时生成的归档为A2。
归档A1、A2属于不同的数据库,使用备份B1和归档A1、A2是否可以恢复数据库到第二次故障发生前的状态呢?
二、操作步骤
1、查看D1状态
select name,status$,mode$ from v$instance;select arch_mode from v$database;select name from v$archived_log;

2、操作数据库的同时备份数据库,备份集为B1。此处以向表中循环插入数据为例来操作数据库
CREATE TABLE TAB_FOR_RECOVER(C1 INT);BEGINFOR I IN 1..100000 LOOPINSERT INTO TAB_FOR_RECOVER VALUES(I);COMMIT;END LOOP;END;/

在插入数据的同时,另一个会话备份数据库
BACKUP DATABASE FULL TO B1 BACKUPSET '/u01/dmdbms/data/DAMENG/bak/DB_FULL_BAK_FOR_RECOVER' DEVICE TYPE DISK;

3、继续插入一段时间数据后关闭数据库实例,备份完成后到关闭数据库期间产生的归档为A1


4、初始化库D2,即待还原的库
dminit path=/u01/dmdbmsbak/data db_name=DAMENG_FOR_RES

5、使用DMRMAN利用备份集B1以及归档A1还原至D1故障前状态
RESTORE DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' FROM BACKUPSET '/u01/dmdbms/data/DAMENG/bak/DB_FULL_BAK_FOR_RECOVER';RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' WITH ARCHIVEDIR '/u01/dmdbms/data/DAMENG/arch';RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' UPDATE DB_MAGIC;
6、启动D2,开启归档并配置相同归档路径,继续插入数据
dmserver /u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini

alter database mount;alter database archivelog;ALTER DATABASE ADD ARCHIVELOG 'DEST=/u01/dmdbms/data/DAMENG/arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';alter database open;select name,status$,mode$ from v$instance;select arch_mode from v$database;select name from v$archived_log;

BEGINFOR I IN 1..100000 LOOPINSERT INTO TAB_FOR_RECOVER VALUES(I);COMMIT;END LOOP;END;/


7、插入一段时间后,关闭数据库,模拟第二次故障,从启动到关闭期间产生的归档为A2


8、将D2恢复至第一次故障前状态,然后利用A2将库恢复到最新状态
首先查看当前数据库的DB_MAGIC

然后将数据库恢复至第一次故障前状态

恢复后的DB_MAGIC为

然后恢复A2归档,但是因为DB_MAGIC值不同,所以恢复时需指定DB_MAGIC
RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' WITH ARCHIVEDIR '/u01/dmdbms/data/DAMENG/arch' USE DB_MAGIC 1410316548;RECOVER DATABASE '/u01/dmdbmsbak/data/DAMENG_FOR_RES/dm.ini' UPDATE DB_MAGIC;
>>> THE END <<<
相关推荐
干货 | DM8非确认监视器集群管理

文章转载自达梦E学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




