点击链接阅读原文,提升阅读体验: https://www.modb.pro/db/21852?cyn

LINUX系统中被删除的文件,只要其句柄没有被关闭,可以在/proc//fd中找到其对应的文件副本。其中指打开该文件的进程id。利用该方法,结合OS命令,DM7提供失效文件的恢复方案,下面用示例来演示:

1.创建一个表空间cs,给其创建两个数据文件

SQL> create tablespace cs datafile ‘/dm_home/dmdba/dmdbms/data/jydm/cs1.dbf’ size 128,’/dm_home/dmdba/dmdbms/data/jydm/cs.dbf’ size 128;
executed successfully
used time: 00:00:21.941. Execute id is 90.

2.找出达梦服务器进程ID

[root@cs1 jydm]# ps -ef | grep dmserver
dmdba 2467 1 0 10月15 ? 00:05:53 /dm_home/dmdba/dmdbms/bin/dmserver /dm_home/dmdba/dmdbms/data/jydm/dm.ini -noconsole
root 18893 18058 0 21:45 pts/1 00:00:00 grep --color=auto dmserver

3.显示达梦服务器进程所打开的文件列表

[root@cs1 jydm]# ls /proc/2467/fd -l
总用量 0
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf
lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log

4.删除表空间cs中的一个数据文件

[root@cs1 jydm]# rm -rf cs.dbf

5.通过调用系统过程SP_FILE_SYS_CHECK()来手动的对表空间失效文件进行检查。

SQL> call SP_FILE_SYS_CHECK();
DMSQL executed successfully
used time: 0.690(ms). Execute id is 93.

6.在表空间cs中创建一个测试表cs,命令执行出错,显示表空间cs中的cs.dbf文件已经被删除了。

SQL> create table cs(cs_id number) tablespace cs;
create table cs(cs_id number) tablespace cs;
[-3430]:tablespace[CS] file[/dm_home/dmdba/dmdbms/data/jydm/cs.dbf] has been deleted.
used time: 31.462(ms). Execute id is 0.

7.调用系统过程SP_TABLESPACE_PREPARE_RECOVER(tablespace_name)准备进行恢复

SQL> call SP_TABLESPACE_PREPARE_RECOVER(‘CS’);
DMSQL executed successfully
used time: 16.121(ms). Execute id is 95.

8.显示达梦服务器进程所打开的文件列表,可以看到cs.dbf文件被标示为deleted了。

[root@cs1 jydm]# ls /proc/2467/fd -l
总用量 0
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 0 -> /dev/null
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 1 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 10 -> /dm_home/dmdba/dmdbms/data/jydm/ROLL.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 11 -> /dm_home/dmdba/dmdbms/data/jydm/MAIN.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 12 -> /dm_home/dmdba/dmdbms/data/jydm/BOOKSHOP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 13 -> /dm_home/dmdba/dmdbms/data/jydm/DMHR.DBF
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 14 -> pipe:[21853]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 15 -> pipe:[21853]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 16 -> pipe:[21854]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 17 -> pipe:[21854]
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 18 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 19 -> pipe:[21855]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 2 -> /dm_home/dmdba/dmdbms/log/DmServicejydm.log
lr-x------ 1 dmdba dinstall 64 10月 15 12:23 20 -> pipe:[21856]
l-wx------ 1 dmdba dinstall 64 10月 15 12:23 21 -> pipe:[21856]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 22 -> socket:[297043807]
lrwx------ 1 dmdba dinstall 64 10月 25 21:12 23 -> /dm_home/dmdba/dmdbms/data/jydm/cs1.dbf
lrwx------ 1 dmdba dinstall 64 10月 25 21:42 24 -> /dm_home/dmdba/dmdbms/data/jydm/cs.dbf (deleted)
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 3 -> socket:[20041]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 4 -> socket:[20042]
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 5 -> /dm_home/dmdba/dmdbms/data/jydm/SYSTEM.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 6 -> /dm_home/dmdba/dmdbms/data/jydm/dminst.sys
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 7 -> /dm_home/dmdba/dmdbms/data/jydm/TEMP.DBF
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 8 -> /dm_home/dmdba/dmdbms/data/jydm/jydm01.log
lrwx------ 1 dmdba dinstall 64 10月 15 12:23 9 -> /dm_home/dmdba/dmdbms/data/jydm/jydm02.log

9.使用操作系统的cp命令将文件(cs.dbf)复制到原位置

[root@cs1 jydm]# cp /proc/2467/fd/24 /dm_home/dmdba/dmdbms/data/jydm/cs.dbf
[root@cs1 jydm]# ls -lrt
总用量 1365112
drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:12 bak
-rw-r–r-- 1 dmdba dinstall 479 7月 23 22:12 sqllog.ini
-rw-r–r-- 1 dmdba dinstall 633 7月 23 22:13 dm_service.prikey
drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:14 HMAIN
-rw-r–r-- 1 dmdba dinstall 908 7月 23 22:14 dminit20180723221249.log
-rw-r–r-- 1 dmdba dinstall 890 7月 23 22:14 dmarch_example.ini
-rw-r–r-- 1 dmdba dinstall 1966 7月 23 22:14 dmdcr_cfg_example.ini
-rw-r–r-- 1 dmdba dinstall 631 7月 23 22:14 dmdcr_example.ini
-rw-r–r-- 1 dmdba dinstall 2070 7月 23 22:14 dmmal_example.ini
-rw-r–r-- 1 dmdba dinstall 1537 7月 23 22:14 dminit_example.ini
-rw-r–r-- 1 dmdba dinstall 1277 7月 23 22:14 dmmonitor_example.ini
-rw-r–r-- 1 dmdba dinstall 1679 7月 23 22:14 dmtimer_example.ini
-rw-r–r-- 1 dmdba dinstall 288 7月 23 22:14 dmmpp_example.ini
-rw-r–r-- 1 dmdba dinstall 1241 7月 23 22:14 dmwatch_example.ini
-rw-r–r-- 1 dmdba dinstall 2146 7月 23 22:14 dmwatcher_example.ini
-rw-r–r-- 1 dmdba dinstall 522 7月 23 22:14 dmwmon_example.ini
-rw-r–r-- 1 dmdba dinstall 636 7月 23 22:14 sqllog_example.ini
drwxr-xr-x 2 dmdba dinstall 6 7月 23 22:14 trace
-rw-r–r-- 1 dmdba dinstall 12 7月 23 22:14 rep_conflict.log
-rw-r–r-- 1 dmdba dinstall 157286400 7月 23 22:16 BOOKSHOP.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 7月 23 22:16 DMHR.DBF
-rw-r–r-- 1 dmdba dinstall 40859 8月 20 15:20 dm.ini
-rw-r–r-- 1 dmdba dinstall 10485760 10月 15 12:21 TEMP.DBF
-rw-r–r-- 1 dmdba dinstall 268435456 10月 15 12:21 jydm02.log
-rw-r–r-- 1 dmdba dinstall 134217728 10月 25 21:24 MAIN.DBF
-rw-r–r-- 1 dmdba dinstall 134217728 10月 25 21:43 cs1.dbf
-rw-r–r-- 1 dmdba dinstall 7168 10月 25 21:43 dm.ctl
drwxr-xr-x 2 dmdba dinstall 4096 10月 25 21:43 ctl_bak
-rw-r–r-- 1 dmdba dinstall 134217728 10月 25 21:43 ROLL.DBF
-rw-r–r-- 1 dmdba dinstall 22020096 10月 25 21:59 SYSTEM.DBF
-rw-r–r-- 1 dmdba dinstall 268435456 10月 25 21:59 jydm01.log
-rw-r–r-- 1 root root 134217728 10月 25 21:59 cs.dbf
-rw-r–r-- 1 dmdba dinstall 220 10月 25 21:59 dminst.sys

10.复制成功后,调用系统过程SP_TABLESPACE_RECOVER(ts_name)完成表空间失效文件的恢复。注意,要保证数据文件正确修复,需要保证在SP_TABLESPACE_PREPARE_RECOVER后进行数据文件的复制。

SQL> call SP_TABLESPACE_RECOVER(‘CS’);
DMSQL executed successfully
used time: 46.532(ms). Execute id is 96.

11.再次在表空间cs中创建测试表cs命令成功执行

SQL> create table cs(cs_id number) tablespace cs;
executed successfully
used time: 36.913(ms). Execute id is 97.

到此,在Linux系统中恢复被删除的表空间文件恢复成功了。

本文转载至墨天轮社区

文章来源: https://www.modb.pro/db/21852?cyn

———— / END / ————

Linux 恢复rm -rf命令所删除的达梦数据文件相关推荐

  1. Linux 使用rm -rf /*命令后,恢复系统方法

    Linux 使用rm -rf /*命令后,恢复系统方法 个人学习记录 这里实验环境采用的是radhel7.1的版本: 个人认为核心就是缺失什么组件,就从别的地方复制什么组件过来,先把系统拉起来,再慢慢 ...

  2. linux rm无法删除权限不够,linux下的文件用root用户rm -rf命令无法删除解决方案

    linux下的文件用root用户rm -rf命令无法删除解决方案(可能文件处在挂载的磁盘阵列(U盘,光盘.硬盘等),而磁盘阵列在别的服务器上,以下解决步骤和方案可能只是针对这一种情况,不保证解决所有类 ...

  3. Linux find+rm -rf 执行组合删除

    Linux find+rm -rf 执行组合删除 [ 语法 ] # find  对应目录  -mtime + 天数  -name " 文件名 " -exec rm -rf {} \ ...

  4. linux执行rm -rf /*命令后的效果原来是这样

    如果你接触过linux,肯定没少听过rm -rf的故事,这个恐怖的命令执行后到底会产生什么样的效果呢?接下来就带大家在虚拟机中演示一下. 注意:::一定不能在生产环境中执行此命令,否则没有后悔药可买的 ...

  5. 达梦数据文件误删了恢复

    前提条件:数据文件是在数据库运行时删除的,有时间限制,而且不能重启服务器和数据库服务器.关键表空间不能删除. 1.新建测试表空间. create tablespace TEST datafile '/ ...

  6. linux恢复rm删除文件ssd,科学网—linux恢复rm -rf删除的文件 - 罗晓光的博文

    ext3grep这个软件可以恢复linux ext3分区下rm -rf删除的文件,以下是部分存档操作记录(不全),仅供参考 1-step Writing analysis so far to 'sda ...

  7. linux rm -f rm -rf 命令:删除文件和文件夹

    删除文件使用实例:  rm -f  python.py 将会强制删除python.py这个文件 删除目录使用实例:  rm -rf  /home/song/wahaha  将会删除/home/song ...

  8. linux rm rf 无法删除文件夹,最暴力的 rm -rf 命令居然删除目录失败了!为什么?...

    当我们在Linux系统中卸载软件或清理数据时,经常会使用rm -rf命令去删除某个目录,例如删除/tmp/tektea目录: # rm -rf /tm/tektea rm命令的-r和-f这两个参数的m ...

  9. sudo rm -rf /* 命令运行演示(管理员身份删除根目录所有文件)

    一.前言 闲来无事,好奇传说中的 sudo rm rf /* 命令究竟有什么样的魅力让无数人趋之若鹜,本着奉献精神,作者将在自己的服务器上测试一番,各位读者切勿轻易尝试. 不,切勿尝试! 二.泪目演示 ...

最新文章

  1. 通过防火墙堵住×××安全漏洞
  2. 使用Spring AOP,自定义注释和反射为您的应用审核基础架构
  3. 【Git入门之五】版本管理
  4. 2018年五大最佳前端框架比较,程序员会怎么选?
  5. 平台表单默认按钮的使用及效果展示——JEPLUS软件快速开发平台
  6. realme Q5 Pro Vans联名版曝光:经典棋盘格图案设计 辨识度拉满
  7. axure轮播图怎么设置循环轮播_Axure教程:轮播图制作步骤详解
  8. 【入门】PyTorch文本分类
  9. 解决Tomcat在cmd乱码问题
  10. 实验7-3-8 输出大写英文字母
  11. 数据结构 —— 队列
  12. Vue实现购物车功能
  13. 3D打印:三维智能数字化创造(全彩)
  14. 基于机器学习和深度学习的图数据异常检测综述
  15. 【C++】面向对象之多态篇
  16. 华夏ERP使用的多租户到底是什么技术
  17. 2021-09-10 LeetCode1894-找到需要补充粉笔的学生编号(每日一题)
  18. electron的单元测试(基于mocha+chai+karma)
  19. 基于FMCW的测距原理及matlab仿真
  20. DBM、GDBM与C语言跨平台代码研究

热门文章

  1. 开源开发工具_3个开源行为驱动的开发工具
  2. 无根二叉树_无根Podman如何工作?
  3. cms系统和管理员系统区别_如何成为懒惰的系统管理员
  4. steam 代购 机器人_两台Steam机器上市,对SteamOS的评论以及更多开放式游戏新闻
  5. 怎么成为开源贡献者_成为负责任的开源用户
  6. drupal 迁移_关于如何迁移到Drupal的4个技巧
  7. Bootstrap响应式工具类
  8. Bootstrap 表单的帮助文本
  9. CSS 制作手风琴导航
  10. 安全整数和 Number.isSafeInteger()