栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

达梦数据库(DM8)误删除表空间数据文件恢复

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

达梦数据库(DM8)误删除表空间数据文件恢复

此文章我们演示linux系统中误删表空间并恢复找回数据。此方法可以在没有数据库文件没有备份的情况下,恢复误删除的数据文件。

linux系统中被删除的表空间,只要达梦数据库服务没有被关闭,可以在/proc//fd找到对应的文件副本进行恢复。指该文件的进程ID,具体操作步骤如下:

误删除表空间文件回复

– 创建表空间

create tablespace TEST_RM datafile ‘/dm8/data/DAMENG/TEST_RM01.dbf’ size 200 ;

 – 创建测试表

create table wstest (id int,name varchar(100)) tablespace TEST_RM;

  – 插入测试数据

insert into wstest values (1,‘test’);

   – 提交执行,查看数据是否成功插入

commit;
select * from wstest;

 

SQL> select * from wstest;

行号 ID NAME

1 1 test

已用时间: 0.291(毫秒). 执行号:21.

– 模拟数据文件被删除

[dmdba@dameng ~]$ rm /dm8/data/DAMENG/TEST_RM01.dbf
[dmdba@dameng ~]$ ll /dm8/data/DAMENG/TEST_RM01.dbf
ls: 无法访问/dm8/data/DAMENG/dmtbs.dbf: 没有那个文件或目录
[dmdba@dameng ~]$

 – 查看TEST_RM表空间状态

SQL> select tablespace_name from dba_data_files;
select tablespace_name from dba_data_files;
[-2206]:无效的参数值.
已用时间: 4.373(毫秒). 执行号:0.
SQL>
此时已经报[-2206]:无效的参数值.错误

 – 再次查看表数据

SQL> select * from wstest;

行号 ID NAME

1 1 test

已用时间: 0.291(毫秒). 执行号:21.

 – 查看数据库进程号,找到未释放的文件句柄号和被删除的数据文件(重启之后文件句柄将会消失) 

[dmdba@dameng ~]$ ps -ef|grep dmserver
dmdba 27663 1 0 16:49 ? 00:00:24 /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini -noconsole
dmdba 27664 1 0 16:49 ? 00:00:22 /dm8/bin/dmserver /dm8/data/DM2/dm.ini -noconsole
dmdba 28864 28717 0 20:20 pts/2 00:00:00 grep --color=auto dmserver
[dmdba@dameng ~]$ cd /proc/9861/fd
[dmdba@dameng fd]$ ls -l
总用量 0
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 1 -> /dm8/log/DmServiceDMSERVER.log
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 10 -> /dm8/data/DAMENG/DAMENG04.log
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 11 -> /dm8/data/DAMENG/DMHR.DBF
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 12 -> /dm8/data/DAMENG/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 13 -> /dm8/data/DAMENG/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 14 -> /dm8/data/DAMENG/TEST_RM01.dbf (deleted)
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 15 -> /dm8/data/DAMENG/TEST02.DBF
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 16 -> /dm8/data/DAMENG/tbs01.dbf
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 17 -> /dm8/data/tbs02.dbf
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 18 -> /dm8/data/DAMENG/TEST01.DBF
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 19 -> /dm8/arch/ARCHIVE_LOCAL1_20201118164931099_0.log
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 2 -> /dm8/log/DmServiceDMSERVER.log
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 20 -> pipe:[56628]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 21 -> pipe:[56628]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 22 -> pipe:[56629]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 23 -> pipe:[56629]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 24 -> pipe:[56630]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 25 -> pipe:[56630]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 26 -> pipe:[56631]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 27 -> pipe:[56631]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 28 -> pipe:[56632]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 29 -> pipe:[56632]
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 3 -> socket:[54677]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 30 -> pipe:[56633]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 31 -> pipe:[56633]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 32 -> pipe:[56634]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 33 -> pipe:[56634]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 34 -> pipe:[56635]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 35 -> pipe:[56635]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 36 -> pipe:[56636]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 37 -> pipe:[56636]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 38 -> pipe:[56637]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 39 -> pipe:[56637]
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 4 -> socket:[54678]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 40 -> pipe:[56638]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 41 -> pipe:[56638]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 42 -> pipe:[56639]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 43 -> pipe:[56639]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 44 -> pipe:[56640]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 45 -> pipe:[56640]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 46 -> pipe:[56641]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 47 -> pipe:[56641]
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 48 -> pipe:[56642]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 49 -> pipe:[56642]
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 5 -> /dm8/data/DAMENG/SYSTEM.DBF
lr-x------ 1 dmdba dinstall 64 11月 18 20:03 50 -> pipe:[56643]
l-wx------ 1 dmdba dinstall 64 11月 18 20:03 51 -> pipe:[56643]
lrwx------ 1 dmdba dinstall 64 11月 18 20:22 53 -> /dm8/data/DAMENG/TEST_RM01.dbf (deleted)
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 6 -> /dm8/data/DAMENG/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 7 -> /dm8/data/DAMENG/DAMENG01.log
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 8 -> /dm8/data/DAMENG/DAMENG02.log
lrwx------ 1 dmdba dinstall 64 11月 18 20:03 9 -> /dm8/data/DAMENG/DAMENG03.log

 可见TEST_RM01.dbf文件虽然已经被rm删除,但是由于达梦数据库进程还占用着该文件,所以文件只是被标记为deleted状态,说明在数据文件被删除后该表任然在内存当中(存在恢复的可能)。一旦达梦数据库关闭或者重启,就会导致数据库进程释放掉该文件句柄,TEST_RM01.dbf文件也会被彻底删除。

– 将数据文件复制回去 (需要用dmdba的用户复制文件)

[dmdba@dameng fd]$ cp 53 /dm8/data/DAMENG/TEST_RM01.dbf
[dmdba@dameng fd]$ ls -l /dm8/data/DAMENG/TEST_RM01.dbf
-rw-r–r-- 1 dmdba dinstall 209715200 11月 18 20:24 /dm8/data/DAMENG/TEST_RM01.dbf

– 查询数据和表空间进行数据验证 

SQL> select tablespace_name from dba_data_files;

行号 TABLESPACE_NAME

1 SYSTEM
2 TEST_RM
3 MAIN
4 TEMP
5 ROLL

5 rows got

已用时间: 123.109(毫秒). 执行号:34.

至此恢复完成!!
恢复过程中需要注意的点:
1.数据库和操作系统不能重启 ;
2.复制数据文件的时候需要用dmdba用户进行复制,其他账户复制文件需要将文件用户和组权限设置为dmdba和dinstall;

友情提示:做好数据库备份!!!

达梦技术社区地址:https://eco.dameng.com

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000455.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号