达梦8数据库数据文件误删恢复方法

1、概述
达梦数据库案例学习主要是作为一种工具,主要提供对复制事件、进程、过程以及一系列相关事件的信息与知识。每个案例都是在处理实际问题的经验基础上编写的。
本案例描述了达梦8数据库在非关键数据文件丢失后的一些恢复方法,能够提供在没有备份的情况下快速恢复数据文件。
2、创建测试环境
a.创建新的表空间DMTBS
服务器[localhost:5236]:处于普通打开状态
登录使用时间: 14.658(毫秒)
disql V8.1.0.147-Build(2019.03.27-104581)ENT
SQL> create tablespace DMTBS datafile ‘/dm8/data/DAMENG/dmtbs.dbf’ size 200 ;
操作已执行
已用时间: 158.036(毫秒). 执行号:11.
SQL>
b.创建测试表
SQL> create table dmtest (id int,name varchar(100)) tablespace dmtbs;
操作已执行
已用时间: 3.590(毫秒). 执行号:14.
SQL>
c.插入测试数据
SQL> insert into dmtest values (1,‘test’);
影响行数 1

已用时间: 0.608(毫秒). 执行号:19.
SQL> commit;
操作已执行
已用时间: 0.727(毫秒). 执行号:20.
d.查看测试数据
SQL> select * from dmtest;

行号 ID NAME


1 1 test

已用时间: 0.291(毫秒). 执行号:21.
SQL>
3、模拟/dm8/data/DAMENG/dmtbs.dbf数据文件被删除
[dmdba@dameng ~]$ rm /dm8/data/DAMENG/dmtbs.dbf
[dmdba@dameng ~]$ ll /dm8/data/DAMENG/dmtbs.dbf
ls: 无法访问/dm8/data/DAMENG/dmtbs.dbf: 没有那个文件或目录
[dmdba@dameng ~]$
4、查看DMTBS表空间状态
SQL> select tablespace_name from dba_data_files;
select tablespace_name from dba_data_files;
[-2206]:无效的参数值.
已用时间: 4.373(毫秒). 执行号:0.
SQL>
此时已经报[-2206]:无效的参数值.错误
5、查看dmtest表数据
SQL> select * from dmtest;

行号 ID NAME


1 1 test

已用时间: 0.360(毫秒). 执行号:28.
可见此时任然可以查询到dmtest表。
说明在数据文件被删除后该表任然在内存当中(存在恢复的可能)。
6、查看达梦数据库的进程号
[dmdba@dameng ~]$ ps -ef|grep dmserver
dmdba 9861 1 0 16:49 ? 00:00:24 /dm8/bin/dmserver /dm8/data/DAMENG/dm.ini -noconsole
dmdba 9862 1 0 16:49 ? 00:00:22 /dm8/bin/dmserver /dm8/data/DM2/dm.ini -noconsole
dmdba 23864 23717 0 20:20 pts/2 00:00:00 grep --color=auto dmserver
7、查看9861进程号的文件句柄
[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.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/dmtbs.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
可见/dm8/data/DAMENG/dmtbs.dbf文件虽然已经被rm删除,但是由于达梦数据库进程还占用着该文件,所以文件只是被标记为deleted状态。一旦达梦数据库关闭或者重启,就会导致数据库进程释放掉该文件句柄,/dm8/data/DAMENG/dmtbs.dbf文件也会被彻底删除。
7、恢复文件句柄
[dmdba@dameng fd]$ cp 53 /dm8/data/DAMENG/dmtbs.dbf
[dmdba@dameng fd]$ ls -l /dm8/data/DAMENG/dmtbs.dbf
-rw-r–r-- 1 dmdba dinstall 209715200 11月 18 20:24 /dm8/data/DAMENG/dmtbs.dbf
[dmdba@dameng fd]$
8、重新查看dmtbs表空间状态
服务器[localhost:5236]:处于普通打开状态
登录使用时间: 9.725(毫秒)
disql V8.1.0.147-Build(2019.03.27-104581)ENT
SQL>
SQL>
SQL>
SQL> select tablespace_name from dba_data_files;

行号 TABLESPACE_NAME


1 SYSTEM
2 DMTBS
3 TEST1
4 TBS
5 TBS
6 TEST2
7 TEST
8 DMHR
9 MAIN
10 TEMP
11 ROLL

11 rows got

已用时间: 123.109(毫秒). 执行号:34.
此时查询dba_data_files等视图也正常。
9、总结
平时在数据库故障或者发生误操作的时候在不确定的情况下绝对不能随便重启数据库,否则后悔莫及!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值