在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;复制 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;复制
2.2 删除对应的表空间的数据文件进行模拟 [dmdba@localhost ~]$ cd /dbdata/dmdata/DAMENG/
[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;复制 [/dmdba@localhost dameng][/dmdba@localhost ~] 试读已结束,请付费阅读全文。 ¥ 3.00 付费阅读   本文只能试读34%,付费后可阅读全文。  |