分享

达梦数据库LINUX下误删数据文件如何进行数据恢复

在linux系统当中,达梦数据库是以数据文件的方式保存在操作系统中,当你删除数据文件,只要是操作系统和数据库未重启,文件的句柄是未释放的。此时当你删除了数据文件的时候,数据库和操作系统未重启,又没有数据备份的时候,我们还有机会将数据文件进行恢复。本文提供两种数据恢复的方式。

一、数据恢复方式一——利用数据迁移工具将数据迁移到新的正常的数据库实例上
数据文件删除之后只要未做数据文件检查,数据文件中对应的表数据还是可以正常访问的,所以我们可以重新初始化一个参数一致的数据库。使用不同的端口,然后启动数据库。然后将应用停掉防止数据再写入,再使用迁移工具将数据完整迁移过来。
如果数据量不大的情况下数据迁移将很快。但是对于数据量较大,停机迁移时间无法接受的情况下,又没有数据备份的情况可以使用第二种方法。

二、数据恢复方式二——将删除的数据文件找回进行恢复
注:以下操作均在实验测试环境下进行,如果是生产环境需要谨慎操作并向达梦原厂技术支持获取技术指导。

2.1 创建测试用的表空间、数据文件、用户、表。
SQL> create tablespace TEST_RM datafile '/dbdata/dmdata/DAMENG/TEST_RM01.DBF' size 128 ;SQL> create user TEST_RM identified by Dameng123 default tablespace TEST_RM;SQL> grant "PUBLIC","RESOURCE","VTI" to TEST_RM;SQL> create table TEST_RM.T1 as select * from dba_objects;SQL> select count(*) from TEST_RM.T1;
复制
20230602194150PNCG32Q0XYA0QH48CQ.jpg
SQL> create table TEST_RM.test(id int,name varchar(32));SQL> insert into TEST_RM.test values(1,'HYN');SQL> commit;select * from TEST_RM.test;
复制
20230602194250Z5O5QTLK44B5NWYSB2.jpg

2.2 删除对应的表空间的数据文件进行模拟
[dmdba@localhost ~]$ cd /dbdata/dmdata/DAMENG/
20230602194347LJ7GLLRSALUZ39CQV7.jpg
[dmdba@localhost DAMENG]$ mv TEST_RM01.DBF ../
如果在操作的过程中对应的数据文件持续有写入或修改操作时,恢复同样能够成功:
SQL> insert into TEST_RM.test values(2,'GH');SQL> update TEST_RM.test set name='HYY' where id=1;SQL> commit;
复制
202306021945006BTIPK8NISNB8J2JP9.jpg

[/dmdba@localhost dameng][/dmdba@localhost ~]

试读已结束,请付费阅读全文。

  本文只能试读34%,付费后可阅读全文。 

版权说明:论坛帖子主题均由合作第三方提供并上传,若内容存在侵权,请进行举报

没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系在线客服