场景一、本次测试内容为单机数据库误删除数据文件,如何恢复数据库的流程
一、创建测试环境
1、创建一个测试实例
我这边原先已经有数据库了,所以要把端口改一下。
2、把实例开启归档,不然没法备份
直接前台启动、简单设置下归档
3、创建表A1后备份,然后创建表A2
4、关掉数据库,删除SYSTEM、MAIN表空间文件
二、测试
1、启动测试
报错缺少SYSTEM.DBF数据文件。
2、直接还原测试
提示缺少SYSTEM.DBF数据文件。
3、重建数据库还原测试
这里参数简单改一下路径和端口就可以,因为创建的测试环境也没有设置参数,生产环境的初始化参数可以到数据文件路径下有个dminitxxxxxx.log文件查看初始化参数,然后进行再次还原测试
可以还原,但备份文件中只有表A1,没有表A2,接下来利用归档文件进行表A的恢复。
更新魔数。
(有人会问这个 UNTIL TIME ‘2024-02-18 18:20:09.772’,这一串数字是哪里来的。我没有特意的注意时间,我是通过log路径下的dmrman日志找到的,正常只输入2024-02-18 18:20:09就可以。)
三、检查恢复情况。
启动新创建的实例,查看表情况。
表A1,A2都有,恢复成功!!!
场景二、数据表A1误操作,只恢复数据表A1,不影响其他数据表。
(本来场景二的测试内容想写场景一的升级,主备集群利用备机的归档恢复主机数据,但是,我经验尚浅,实在想不出生产环境在什么操作下能出现主备集群删除了主机的归档同时利用数据库还原操作造成数据缺失,所以我这边只提供一个还原的方法吧,不做具体实操。
RECOVER DATABASE ‘/dm/data/DAMENG/dm.ini’ WITH ARCHIVEDIR ‘/dm/data/dmarch’ USE DB_MAGIC xxxxxxxx;
主要区别在于RECOVER的操作,DB_MAGIC 这个值可以直接在数据库中直接查询。)
)
一、回到主题、创建测试环境
前情提要表A1中有三条数据,表A2中无数据
先备份一下,然后误操作删除表A1中的数据,A2表开始插入数据。大概这样四个步骤
二、进行数据还原
如果直接使用备份进行还原,会导致A2表中数据缺失,达梦数据库的联机备份是支持表备份,表还原的,但是一般情况生产环境不会针对某个表进行备份的。所以我们要还原的话需要创建一个新的数据库40,使用备份进行还原。
还原的40数据库A1表数据是全的,如何把这个数据放入39之中呢?在39数据库中创建一个外部链接。
测试连接的时候发现,我这个测试的数据库版本不是企业版,不支持这个功能,那么我打算用DTS把数据迁移过去。(这个环节方法很多,包括表导出再导入等,不一一列举了)
在这个环节为了防止数据重复,点击转换,我选择了删除后拷贝记录。(数据量较大的表酌情使用)
执行成功。
三、数据检查
表A2:
表A1:
数据还原完成。
欢迎大家学习达梦数据库知识:eco.dameng.com