当数据库中的某个数据文件被误删除之后,DBA可以选择使用已有的备份进行还原与恢复,下文为DBA提供了另一种选择,已经通过测试环境进行了相关测试,该方法是个不错的选择。
转自http://www.xifenfei.com/2289.html

一.模拟数据文件删除
[oracle@node1 ~]$ sqlplus / as sysdba
 
SQL*Plus: Release 11.2.0.3.0 Production on Sat Dec 31 22:00:52 2011
 
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
 
--数据库版本
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Oracle Label Security, OLAP, Data Mining,
Oracle Database Vault and Real Application Testing options
 
--所有数据文件
SQL> select name from v$datafile;
 
NAME
--------------------------------------------------------------------------------
/opt/oracle/oradata/ora11g/system01.dbf
/opt/oracle/oradata/ora11g/sysaux01.dbf
/opt/oracle/oradata/ora11g/undotbs01.dbf
/opt/oracle/oradata/ora11g/users01.dbf
/opt/oracle/oradata/ora11g/example01.dbf
 
--删除example01.dbf数据文件
SQL> !rm /opt/oracle/oradata/ora11g/example01.dbf
 
SQL> !ls -l /opt/oracle/oradata/ora11g/example01.dbf
ls: /opt/oracle/oradata/ora11g/example01.dbf: 没有那个文件或目录
 
--因为数据文件被删除,创建表失败
SQL> create table t_xifenfei tablespace example
  2  as select * from dba_tables;
as select * from dba_tables
                 *
ERROR at line 2:
ORA-01116: error in opening database file 5
ORA-01110: data file 5: '/opt/oracle/oradata/ora11g/example01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

二.找回数据文件
--查找dbw进程spid
[oracle@node1 ~]$ ps -ef|grep dbw|grep -v grep
oracle   18387     1  0 Dec22 ?        00:00:12 ora_dbw0_ora11g
 
--查看该进程所有文件句柄
[oracle@node1 ~]$ ll /proc/18387/fd
总计 0
lr-x------ 1 oracle oinstall 64 12-31 22:03 0 -> /dev/null
l-wx------ 1 oracle oinstall 64 12-31 22:03 1 -> /dev/null
lr-x------ 1 oracle oinstall 64 12-31 22:03 10 -> /dev/zero
lr-x------ 1 oracle oinstall 64 12-31 22:03 11 -> /dev/zero
lr-x------ 1 oracle oinstall 64 12-31 22:03 12 -> /opt/oracle/product/11.2.0/db_1/rdbms/mesg/orazhs.msb
lrwx------ 1 oracle oinstall 64 12-31 22:03 13 -> /opt/oracle/product/11.2.0/db_1/dbs/hc_ora11g.dat
lr-x------ 1 oracle oinstall 64 12-31 22:03 14 -> /proc/18387/fd
lr-x------ 1 oracle oinstall 64 12-31 22:03 15 -> /dev/zero
lr-x------ 1 oracle oinstall 64 12-31 22:03 16 -> /opt/oracle/product/11.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------ 1 oracle oinstall 64 12-31 22:03 17 -> /opt/oracle/product/11.2.0/db_1/dbs/hc_ora11g.dat
lrwx------ 1 oracle oinstall 64 12-31 22:03 18 -> /opt/oracle/product/11.2.0/db_1/dbs/lkORA11G
lr-x------ 1 oracle oinstall 64 12-31 22:03 19 -> /opt/oracle/product/11.2.0/db_1/rdbms/mesg/orazhs.msb
l-wx------ 1 oracle oinstall 64 12-31 22:03 2 -> /dev/null
lr-x------ 1 oracle oinstall 64 12-31 22:03 20 -> /opt/oracle/product/11.2.0/db_1/rdbms/mesg/oraus.msb
lrwx------ 1 oracle oinstall 64 12-31 22:03 21 -> socket:[441562]
lrwx------ 1 oracle oinstall 64 12-31 22:03 256 -> /opt/oracle/oradata/ora11g/control01.ctl
lrwx------ 1 oracle oinstall 64 12-31 22:03 257 -> /opt/oracle/oradata/ora11g/system01.dbf
lrwx------ 1 oracle oinstall 64 12-31 22:03 258 -> /opt/oracle/oradata/ora11g/sysaux01.dbf
lrwx------ 1 oracle oinstall 64 12-31 22:03 259 -> /opt/oracle/oradata/ora11g/undotbs01.dbf
lrwx------ 1 oracle oinstall 64 12-31 22:03 260 -> /opt/oracle/oradata/ora11g/users01.dbf
lrwx------ 1 oracle oinstall 64 12-31 22:03 261 -> /opt/oracle/oradata/ora11g/example01.dbf (deleted)
lrwx------ 1 oracle oinstall 64 12-31 22:03 262 -> /opt/oracle/oradata/ora11g/temp01.dbf
lr-x------ 1 oracle oinstall 64 12-31 22:03 3 -> /dev/null
lr-x------ 1 oracle oinstall 64 12-31 22:03 4 -> /dev/null
lrwx------ 1 oracle oinstall 64 12-31 22:03 5 -> /opt/oracle/product/11.2.0/db_1/dbs/hc_ora11g.dat
lr-x------ 1 oracle oinstall 64 12-31 22:03 6 -> /dev/null
lr-x------ 1 oracle oinstall 64 12-31 22:03 7 -> /dev/null
lr-x------ 1 oracle oinstall 64 12-31 22:03 8 -> /dev/null
lr-x------ 1 oracle oinstall 64 12-31 22:03 9 -> /dev/null
--通过句柄恢复数据文件[被删除数据文件会被标示(deleted)]
[oracle@node1 ~]$ cp /proc/18387/fd/261 /opt/oracle/oradata/ora11g/example01.dbf
--确认该数据文件已经恢复成功
[oracle@node1 ~]$ ll /opt/oracle/oradata/ora11g/example01.dbf
-rw-r----- 1 oracle oinstall 362422272 12-31 22:05 /opt/oracle/oradata/ora11g/example01.dbf

三.数据文件online
SQL> alter database datafile 5 offline;
  
Database altered.
  
SQL> recover datafile 5;
Media recovery complete.
SQL> alter database datafile 5 online;
  
Database altered.
 
SQL> create table t_xifenfei tablespace example
  2  as select * from dba_tables;
 
Table created.

四.补充说明
在意外使用os命令删除掉数据文件时,千万不要慌张重启数据库或者操作系统,可以通过dbwn进程相关句柄找回数据文件

ORA-27041: unable to open file--恢复被rm意外删除数据文件相关推荐

  1. 恢复被rm意外删除数据文件

    恢复被rm意外删除数据文件 ======================== 对于rm,很多人都有惨痛的教训.我也遇到一次,一下午写的程序就被rm掉了,幸好只是一个文件,第二天很快又重新写了一遍.但是 ...

  2. linux还原环境,Linux环境利用恢复被rm意外删除数据文件

    Linux环境下不小心在操作系统误rm删除数据文件后,在没有重启数据库或者操作系统的情况下可以利用操作系统句柄恢复.[@more@]1.数据库版本信息: SQL> select * from v ...

  3. oracle 数据文件recover,Oracle数据库意外删除数据文件的恢复(转载)

    今天有客户的数据库意外被删除了整个目录中的数据文件,操作系统级别的删除,然而幸运的是这个数据库没有崩溃,仍然处于open状态的时候,客户就发现了问题,求助到我们,最终完整地恢复了所有数据文件. 在Li ...

  4. Linux系统中如何恢复使用rm -f 删除的文件

    第一步:使用 rm -f 文件删除命令删除某一个文件,比如我删除目录/home/saas-cloud/finance/下的 cfpu-saas-finance-provider-0.0.1.jar文件 ...

  5. 计算机彻底删除删除后如何恢复,如何完全恢复从计算机删除的文件?

    现在,数字产品是我们当代人的最爱. 电脑,手机等是我们的日常用品!但是,电话将在很长一段时间后冻结,并且计算机也将缓慢运行. 然后,我们下载的垃圾清理软件或系统的磁盘清理就可以发挥重要作用. 无疑,这 ...

  6. 误操作删除数据文件恢复案例讨论

    一.实验说明: 本文转载EYGLE的<数据安全警示录>中的一个案例,也有在itpub上发表过http://www.itpub.net/thread-1721724-1-1.html,在这里 ...

  7. ubuntu恢复被rm误删的数据及原理

    昨天一不小心,执行了rm xx  -rf,把一个项目删除了.然后就是各种悔恨,各种自责,这个项目可是一周的工作量啊.最后肯定得解决,于是google搜索发现了恢复神器extundelete,最后顺利恢 ...

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

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

  9. recuva文件恢复乱码_使用Recuva恢复意外删除的文件

    recuva文件恢复乱码 It can be the worst feeling in the world when you accidentally delete a very important ...

最新文章

  1. 微信小程序开发(2)_data属性
  2. 超详细的2440中断机制分析
  3. [Java基础]反射获取成员方法并使用
  4. P3388-[模板]割点(割顶)【tarjan】
  5. Linux入门笔记——cal、date、free、clear、history、man、whatis、uname
  6. 多角度分析平台即服务?PaaS的类型和用例
  7. 什么叫做项目孵化_蓝莓孵化营12进5争夺战,项目人绽放自我不留遗憾
  8. 快速搭建Web环境 Angularjs + Express3 + Bootstrap3
  9. 3ds Max 2012 简体中文版 带注册机32位64位
  10. 华为披露手机出货超1亿台的“两点”意图
  11. 2020年计算机设计大赛 人流量预测 (国赛三等奖)
  12. 对物理量“角速度”与“波矢”的理解
  13. php学习笔记:登录练习(3)
  14. Linux运维工程师常见面试题(一)
  15. Mac 系统添加右键功能菜单--新建 office,文档等
  16. 舆情、网络舆情、舆情分析
  17. 【DKN】(一)KCN详解
  18. 自己搭建的网站,浏览器无法访问此页面解决方法
  19. MANTIS新手操作教程
  20. Dell戴尔笔记本电脑Vostro 5502原装出厂系统恢复原厂系统2004

热门文章

  1. java properties读取缓存_Java读取Properties文件
  2. linux cpp vscode远程调试 的配置
  3. Python 正则 —— 捕获与分组
  4. OPENCV学习笔记2-5_扫描图像并访问相邻像素
  5. 构建之法第一章读后感
  6. Android中关于线性布局基线对齐的讲述
  7. RSS接触 - RSS中的XML文档
  8. 读取笔记本的摄像头的原始yuv数据,通过libav(ffmpeg编码)
  9. python的6种基本数据类型--字典
  10. mybatis与mysql的优点_MyBatis的优缺点以及特点