一、表空间失效文件恢复
1.模拟故障
LINUX 系统中被删除的文件,只要其句柄没有被关闭,就可以通过句柄来恢复,这里我们模拟下表空间的删除,我选择移动表空间到别的目录
[root@czk dmdbms]# ll
总用量 262184
drwxr-xr-x. 10 dmdba dmgroup 8192 4月 7 10:09 bin
drwxr-xr-x. 2 dmdba dmgroup 30 3月 29 12:16 bin2
-rw-r--r--. 1 dmdba dmgroup 134217728 4月 1 13:35 BOOKS.DBF
drwxr-xr-x. 3 dmdba dmgroup 20 4月 7 13:35 czkdata
-rw-r--r--. 1 dmdba dmgroup 134217728 4月 7 14:35 dameng3.log
drwxr-xr-x. 3 dmdba dmgroup 20 3月 29 12:31 data
drwxr-xr-x. 3 dmdba dmgroup 19 3月 29 12:16 desktop
drwxr-xr-x. 2 dmdba dmgroup 4096 3月 29 12:17 doc
drwxr-xr-x. 12 dmdba dmgroup 131 3月 29 12:17 drivers
drwxr-xr-x. 2 dmdba dmgroup 47 4月 7 13:32 full2022
drwxr-xr-x. 2 dmdba dmgroup 4096 3月 29 12:16 include
drwxr-xr-x. 2 dmdba dmgroup 94 3月 29 12:16 jar
drwxr-xr-x. 7 dmdba dmgroup 68 3月 29 12:16 jdk
-rwxr-xr-x. 1 dmdba dmgroup 1071 3月 29 12:16 license_en.txt
-rwxr-xr-x. 1 dmdba dmgroup 1146 3月 29 12:16 license_zh.txt
drwxr-xr-x. 2 dmdba dmgroup 4096 4月 7 14:36 log
drwxr-xr-x. 5 dmdba dmgroup 74 3月 29 12:16 samples
drwxr-xr-x. 3 dmdba dmgroup 37 3月 29 12:16 script
drwxr-xr-x. 9 dmdba dmgroup 4096 3月 29 12:17 tool
drwxr-xr-x. 3 dmdba dmgroup 97 3月 29 12:17 uninstall
-rwxr-xr-x. 1 dmdba dmgroup 2146 3月 29 12:17 uninstall.sh
drwxr-xr-x. 2 dmdba dmgroup 92 3月 29 12:17 web
[root@czk dmdbms]# mv BOOKS.DBF /home/
2.查看服务进程,找到文件所在路径
[dmdba@czk DAMENG]$ ps -ef | grep dmserver
dmdba 26785 1 0 14:35 ? 00:00:01 /opt/dmdbms/bin/dmserver path=/opt/dmdbms/data/DAMENG/dm.ini -noconsole
dmdba 28677 19240 0 15:07 pts/0 00:00:00 grep --color=auto dmserver
通过查看进程号找到路径后,可以看到我所移动的BOOKS表空间已经显示被移除或者删除(BOOKS.DBF (deleted))
[dmdba@czk DAMENG]$ ll /proc/26785/fd/
总用量 0
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 0 -> /dev/null
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 1 -> /opt/dmdbms/log/DmServiceczk.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 10 -> /opt/dmdbms/data/DAMENG/ROLL.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 11 -> /opt/dmdbms/data/DAMENG/MAIN.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 12 -> /opt/dmdbms/data/DAMENG/czk
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 13 -> /opt/dmdbms/BOOKS.DBF (deleted)
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 14 -> /opt/dmdbms/data/DAMENG/BOOK1S.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 15 -> /opt/dmdbms/data/DAMENG/test1.DBF
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 16 -> pipe:[211064]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 17 -> pipe:[211064]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 18 -> pipe:[211065]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 19 -> pipe:[211065]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 2 -> /opt/dmdbms/log/DmServiceczk.log
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 20 -> pipe:[211066]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 21 -> pipe:[211066]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 22 -> pipe:[211067]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 23 -> pipe:[211067]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 24 -> pipe:[211068]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 25 -> pipe:[211068]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 26 -> pipe:[211069]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 27 -> pipe:[211069]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 28 -> pipe:[211070]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 29 -> pipe:[211070]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 3 -> socket:[209575]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 30 -> pipe:[211071]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 31 -> pipe:[211071]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 32 -> pipe:[211072]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 33 -> pipe:[211072]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 34 -> pipe:[211073]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 35 -> pipe:[211073]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 36 -> pipe:[211074]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 37 -> pipe:[211074]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 38 -> pipe:[211075]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 39 -> pipe:[211075]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 4 -> socket:[209576]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 40 -> pipe:[211076]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 41 -> pipe:[211076]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 42 -> pipe:[211077]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 43 -> pipe:[211077]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 44 -> pipe:[211078]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 45 -> pipe:[211078]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 46 -> pipe:[211079]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 47 -> pipe:[211079]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 48 -> /opt/dmdbms/data/DAMENG/arch/ARCHIVE_LOCAL1_0x3377424D[0]_2022-04-07_14-35-18.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 49 -> socket:[209596]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 5 -> /opt/dmdbms/data/DAMENG/SYSTEM.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 50 -> socket:[213374]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 51 -> socket:[213375]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 6 -> /opt/dmdbms/data/DAMENG/TEMP.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 7 -> /opt/dmdbms/data/DAMENG/DAMENG01.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 8 -> /opt/dmdbms/data/DAMENG/DAMENG02.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 9 -> /opt/dmdbms/dameng3.log
3.准备恢复
登入disql,进行恢复前的检查操作
SQL> call sp_file_sys_check();
DMSQL 过程已成功完成
已用时间: 0.953(毫秒). 执行号:406.
执行完检查操作后,在执行恢复准备工作(注意,一定要先执行检查命令在执行恢复准备命令,否则会报错)
SQL> CALL SP_TABLESPACE_PREPARE_RECOVER('BOOKS');
DMSQL 过程已成功完成
4.表空间恢复
执行完恢复准备命令后,我们需要将原来有的备份移动到目前所在的路径里,这里我将表空间移动回来,来模拟备份的数据
[root@czk dmdbms]# cp /home/BOOKS.DBF /opt/dmdbms/data/DAMENG/
在调用系统过程来进行表空间恢复操作
SQL> call sp_tablespace_recover('BOOKS');
DMSQL 过程已成功完成
已用时间: 10.829(毫秒). 执行号:408.
5.查看恢复情况
此时在回到proc下查看dmserver下的文件情况,可以看到当前BOOKS表空间已经恢复正常
[dmdba@czk DAMENG]$ ll /proc/26785/fd/
总用量 0
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 0 -> /dev/null
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 1 -> /opt/dmdbms/log/DmServiceczk.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 10 -> /opt/dmdbms/data/DAMENG/ROLL.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 11 -> /opt/dmdbms/data/DAMENG/MAIN.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 12 -> /opt/dmdbms/data/DAMENG/czk
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 13 -> /opt/dmdbms/BOOKS.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 14 -> /opt/dmdbms/data/DAMENG/BOOK1S.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 15 -> /opt/dmdbms/data/DAMENG/test1.DBF
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 16 -> pipe:[211064]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 17 -> pipe:[211064]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 18 -> pipe:[211065]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 19 -> pipe:[211065]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 2 -> /opt/dmdbms/log/DmServiceczk.log
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 20 -> pipe:[211066]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 21 -> pipe:[211066]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 22 -> pipe:[211067]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 23 -> pipe:[211067]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 24 -> pipe:[211068]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 25 -> pipe:[211068]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 26 -> pipe:[211069]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 27 -> pipe:[211069]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 28 -> pipe:[211070]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 29 -> pipe:[211070]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 3 -> socket:[209575]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 30 -> pipe:[211071]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 31 -> pipe:[211071]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 32 -> pipe:[211072]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 33 -> pipe:[211072]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 34 -> pipe:[211073]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 35 -> pipe:[211073]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 36 -> pipe:[211074]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 37 -> pipe:[211074]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 38 -> pipe:[211075]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 39 -> pipe:[211075]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 4 -> socket:[209576]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 40 -> pipe:[211076]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 41 -> pipe:[211076]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 42 -> pipe:[211077]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 43 -> pipe:[211077]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 44 -> pipe:[211078]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 45 -> pipe:[211078]
lr-x------. 1 dmdba dmgroup 64 4月 7 15:07 46 -> pipe:[211079]
l-wx------. 1 dmdba dmgroup 64 4月 7 15:07 47 -> pipe:[211079]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 48 -> /opt/dmdbms/data/DAMENG/arch/ARCHIVE_LOCAL1_0x3377424D[0]_2022-04-07_14-35-18.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 49 -> socket:[209596]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 5 -> /opt/dmdbms/data/DAMENG/SYSTEM.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 50 -> socket:[213374]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 51 -> socket:[213375]
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 6 -> /opt/dmdbms/data/DAMENG/TEMP.DBF
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 7 -> /opt/dmdbms/data/DAMENG/DAMENG01.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 8 -> /opt/dmdbms/data/DAMENG/DAMENG02.log
lrwx------. 1 dmdba dmgroup 64 4月 7 15:07 9 -> /opt/dmdbms/dameng3.log
总结
表空间恢复操作非常的简单,但是还是需要注意平时在使用过程中的规范
如果还有其他问题,欢迎到达梦社区来提问~
社区地址:https://eco.dameng.com