博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下恢复误删除的数据文件
阅读量:4685 次
发布时间:2019-06-09

本文共 1148 字,大约阅读时间需要 3 分钟。

场景描述:操作系统级别的删除数据文件(/oracle/oradata/ora10g/app1.dbf),而且数据库没有崩溃,仍然处于open状态。

原理:在Linux操作系统中,如果文件从操作系统级别被删除掉,之前打开该文件的进程仍然持有相应的文件句柄,所指向的文件仍然可以读写,并且该文件的文件描述符可以从/proc目录中获得。如果关闭数据库,则句柄就会丢失。 

恢复步骤如下:

1,检查dbwr的进程PID

$ ps -ef|grep dbw0|grep -v grep

2dbwr会打开所有数据文件的句柄。

在proc目录中可以查到,目录名是进程PID,fd表示文件描述符

如图:

[root@localhost fd]# ls -l

total 0

lrwx------ 1 oracle dba 64 Jan  3 18:35 23 -> /oracle/oradata/ora10g/example01.dbf

lrwx------ 1 oracle dba 64 Jan  3 18:35 24 -> /oracle/oradata/ora10g/test01.dbf

lrwx------ 1 oracle dba 64 Jan  3 18:3525-> /oracle/oradata/ora10g/app1.dbf (deleted)

lrwx------ 1 oracle dba 64 Jan  3 18:35 26 -> /oracle/oradata/ora10g/perfstat.dbf

lrwx------ 1 oracle dba 64 Jan  3 18:35 27 -> /oracle/oradata/ora10g/test02.dbf

lrwx------ 1 oracle dba 64 Jan  3 18:35 28 -> /oracle/oradata/ora10g/temp01.dbf

lrwx------ 1 oracle dba 64 Jan  3 18:35 29 -> /oracle/oradata/ora10g/temp02.dbf

红色部分就是表示app1文件已经被删除了

3,直接拷贝句柄到原来数据文件的位置

host cp /proc/3591/fd/25/oracle/oradata/ora10g/app1.dbf

4,恢复文件

alter database datafile 7 offline;

recover datafile 7;

alter database datafile 7 online;

转载于:https://www.cnblogs.com/huangjingzhou/articles/2331025.html

你可能感兴趣的文章
iframe 自动适应页面高度
查看>>
input标签附带提示文字(bootstrap里面输入框的两侧同时添加额外元素)
查看>>
某种密码(搜索专练)
查看>>
【leetcode 简单】 第八十三题 反转字符串中的元音字母
查看>>
【leetcode 简单】 第一百零八题 找到所有数组中消失的数字
查看>>
引用同一解决方案的类库工程不成功
查看>>
[转]单例模式中为什么用枚举更好
查看>>
selenium 获取断言信息
查看>>
c# 模拟get请求例子,演示Session会话状态。
查看>>
[.net 面向对象程序设计深入](0) 开篇
查看>>
C 多线程学习
查看>>
#Sam有话说#一握在手,话说十年
查看>>
匹配两个空格之间的字符。。。
查看>>
CSS 文字溢出 变成省略号 ...
查看>>
Spring事务
查看>>
java编程基础(三)流程控制语句
查看>>
让数据库跑的更快的7个MySQL优化建议
查看>>
jquery 取id模糊查询
查看>>
解决在vue中,自用mask模态框出来后,下层的元素依旧可以滑动的问题
查看>>
修改node节点名称
查看>>